Android自定义视图:使用getWidth(),getHeight()

时间:2014-06-17 06:55:31

标签: android android-custom-view

我创建了一个自定义视图,用于在屏幕内打包25个具有不同半径的圆圈。 为此,它涉及许多需要getWidth(), getHeight(), getLeft(), getRight()等的计算。我已经公开了一种设置数据的方法。

我一设置数据,就会尝试执行计算,然后无效。但总是getWidth(), getHeight(), getLeft(), getRight()返回零

作为解决方法,我在onLayout()覆盖中执行了计算。因此,当我为视图设置数据时,我会调用requestlayout()invalidate()。这暂时工作正常。但我觉得这不是完成它的正确方法。

是否有任何推荐的方法。

1 个答案:

答案 0 :(得分:2)

实际上,如果我们尝试从onCreate()方法调用getHeight()和getWidth()方法,会发生什么。当我们尝试访问图像视图的高度或宽度时,即使在布局加载到屏幕之前,它也必须返回Null。

我可以使用以下方法解决它:

@Override
    public void onWindowFocusChanged (boolean hasFocus) {
        // the height will be set at this point
        Logger.show(Log.INFO, "", "profilePic.getHeight()....."+profilePic.getHeight());
        Logger.show(Log.INFO, "", "profilePic.getWidth()....."+profilePic.getWidth());
    }

onWindowFocusChanged()在加载视图并为用户交互做好准备时调用。