在Android中获取体重
问题描述:
我是新的Android开发人员,我有一个关于在Android中获取View宽度的问题。 我把重量来看= 1在Android中获取体重
<TextView
android:id="@+id/tvSTT"
android:layout_width="0dp"
android:layout_weight="1dp"
android:layout_height="match_parent"/>
我试图找到办法让这个宽度在Java代码中。我应该怎么做? 对不起,我的英语。
答
你TextView
将得到此刻的宽度它被绘制。在那之前,目前还不清楚它的实际宽度是多少(因为屏幕大小不同)。 您可以将OnGlobalLayoutListener
添加到viewTreeObserver,以便在绘制时进行通知。 您可以在侦听器中执行getWidth(),它不应该为0。
添加OnGlobalLayoutListener
像这样
final TextView tvSTTtextView = (TextView)findViewById(R.id.tvSTT);
textView.getViewTreeObserver().addOnGlobalFocusChangeListener(new ViewTreeObserver.OnGlobalFocusChangeListener() {
@Override
public void onGlobalFocusChanged(View view, View view2) {
int width = tvSTTtextView.getWidth(); //width should not be 0
}
});
答
@Override
public void onWindowFocusChanged(boolean hasFocus) {
// TODO Auto-generated method stub
super.onWindowFocusChanged(hasFocus);
//Here you can get the width! use `getWidth()`
}
答
你必须得到视图的布局PARAMS和它转换为TableLayout.LayoutParams,一个你拥有了它,你可以访问到视图重
((TableLayout.LayoutParams) view.getLayoutParams()).weight;// this is the weight
Documenation:的getWidth()](http://developer.android.com/reference/android/view/View.html#getWidth()) – 2014-09-19 07:39:51
由于萨加尔Pilkhwal,但是当我调用getWidth()时,它返回0. – 2014-09-19 07:56:48
'layout_weight'没有单位。也就是说,删除'dp'。 – 2014-09-19 07:57:34