我想从imageView
对象获取宽度值,但是当我运行以下代码时,它返回0
值。为什么我在使用0
时获得imageView.getWidth()
值?我该如何解决这个问题?
public class MainActivity extends Activity {
ImageView imageView;
TextView textView;
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(R.layout.activity_main);
imageView= (ImageView) findViewById(R.id.imageView);
textView = (TextView) findViewById(R.id.textView);
Integer i = imageView.getWidth();
textView.setText(i.toString());
}}
答案 0 :(得分:2)
只需读取ImageView中的ImageView宽度,就像这样:
public class MainActivity extends Activity {
ImageView imageView;
TextView textView;
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(R.layout.activity_main);
imageView = (ImageView) findViewById(R.id.imageView);
textView = (TextView) findViewById(R.id.textView);
imageView.post(new Runnable() {
@Override
public void run() {
Integer i = imageView.getWidth();
textView.setText(i.toString());
}
});
}
}
一旦调用了所有ImageView的生命周期方法,就会执行post回调,这意味着整个视图已经被测量,因此你有一个适当的视图宽度。
这有帮助吗?
答案 1 :(得分:0)
您可以将调用移至view.post()或activity.onPostResume()。在这个阶段,视图应该完全初始化。
答案 2 :(得分:-1)
在创建视图层次结构时,它很可能尚未充气,因此尚未设置视图的维度。我会将此调用移至活动生命周期的后期阶段,可能是onResume()
。