我是新的Android开发,我有一个关于在Android中获取View宽度的问题。 我设定了视图的权重= 1
<TextView
android:id="@+id/tvSTT"
android:layout_width="0dp"
android:layout_weight="1dp"
android:layout_height="match_parent"/>
我试图找到在java代码中获取此宽度的方法。我应该怎么做? 抱歉我的英文。
答案 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
}
});