Android自定义视图:使用getWidth(),getHeight()
我已经创建了一个自定义视图,在屏幕中包含25个不同半径的圆。 为此,它涉及许多计算,这些计算需要Android自定义视图:使用getWidth(),getHeight(),android,android-custom-view,Android,Android Custom View,我已经创建了一个自定义视图,在屏幕中包含25个不同半径的圆。 为此,它涉及许多计算,这些计算需要getWidth()、getHeight()、getLeft()、getRight()等等,我已经公开了一个设置数据的方法 一旦我设置了数据,我就会尝试执行计算,然后使其无效。但总是,getWidth()、getHeight()、getLeft()、getRight()返回零 作为一种解决方法,我在onLayout()override中执行了计算。因此,当我为视图设置数据时,我调用requestlay
getWidth()、getHeight()、getLeft()、getRight()
等等,我已经公开了一个设置数据的方法
一旦我设置了数据,我就会尝试执行计算,然后使其无效。但总是,getWidth()、getHeight()、getLeft()、getRight()
返回零
作为一种解决方法,我在onLayout()
override中执行了计算。因此,当我为视图设置数据时,我调用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()。使用getMeasuredWidth()和getMeasuredHeight()