getWidth()和getHeight()返回0值

时间:2017-08-16 16:04:04

标签: java android

您好我已经在Android中创建了我的个人视图,当我想获得它的维度时,我总是得到0值,我发现我应该在我的代码中延迟这个动作,我有一个问题可以在这条路?我得到了很好的维度

Personalview myView = (Personalview)findViewById(R.id.myView);
myView.postDelayed(new Runnable() {
    @Override
    public void run() {
        Log.i("WIDTH",String.valueOf(myView .getHeight()));
        Log.i("HEIGHT",String.valueOf(myView .height()));
    }
},1000);

1 个答案:

答案 0 :(得分:2)

使用OnLayoutChangeListener

myView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
            @Override
            public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
                myView.removeOnLayoutChangeListener(this);

                // get dimensions now
            }
        });

这比设置任意延迟更好。当View的边界因布局处理而发生变化时,您将收到回调。因此,您将在onLayoutChange回调中获得正确的尺寸。不要忘记在第一次回调后删除监听器。