在android中获得重量

时间:2014-09-19 07:37:55

标签: android

我是新的Android开发,我有一个关于在Android中获取View宽度的问题。 我设定了视图的权重= 1

<TextView
        android:id="@+id/tvSTT"
        android:layout_width="0dp"
        android:layout_weight="1dp"
        android:layout_height="match_parent"/>

我试图找到在java代码中获取此宽度的方法。我应该怎么做? 抱歉我的英文。

3 个答案:

答案 0 :(得分:0)

@Override
 public void onWindowFocusChanged(boolean hasFocus) {
  // TODO Auto-generated method stub
  super.onWindowFocusChanged(hasFocus);
  //Here you can get the width! use `getWidth()`
 }

答案 1 :(得分:0)

您必须获取视图的布局参数并将其转换为TableLayout.LayoutParams,您可以使用它来访问视图权重

((TableLayout.LayoutParams) view.getLayoutParams()).weight;// this is the weight

答案 2 :(得分:0)

您的TextView在绘制时会获得宽度。在那之前,不清楚它的实际宽度是多少(因为屏幕尺寸很多)。 您可以向viewTreeObserver添加OnGlobalLayoutListener,以便在绘制时收到通知。 您可以在侦听器中执行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
        }
    });