为什么我在使用imageView.getWidth()

时间:2015-09-07 20:34:58

标签: android

我想从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());
    }}

3 个答案:

答案 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()