在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代码中。我应该怎么做? 对不起,我的英语。

+1

Documenation:的getWidth()](http://developer.android.com/reference/android/view/View.html#getWidth()) – 2014-09-19 07:39:51

+0

由于萨加尔Pilkhwal,但是当我调用getWidth()时,它返回0. – 2014-09-19 07:56:48

+2

'layout_weight'没有单位。也就是说,删除'dp'。 – 2014-09-19 07:57:34

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