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

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

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

有没有推荐的方法可以做到这一点。

最佳答案

实际上,如果尝试从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()。

关于android - Android自定义 View :使用getWidth(),getHeight(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24257442/

10-11 00:16