如何使用getMeasuredWidth()
和getMeasuredHeight()
?它总是返回0。这与getHeight()
和getWidth()
有什么区别?
刚刚找到了获取自定义视图高度和宽度的解决方案:
@Override
protected void onSizeChanged(int xNew, int yNew, int xOld, int yOld){
super.onSizeChanged(xNew, yNew, xOld, yOld);
viewWidth = xNew;
viewHeight = yNew;
}
在我的情况下它是可行的。
someView.measuredWidth
和 someView.measuredHeight
。 - undefinedint height = yourView.getLayoutParams().height;
int width = yourView.getLayoutParams().width;
这提供了在 XML 布局中指定的视图的转换后值。
比如如果在 XML 中指定高度值为 53dp,则会得到转换后的整数值80。
不要试图在构造函数内获取它们,尝试在 onDraw()
方法中调用它们。
我曾在getMeasuredWidth()
和getMeasuredHeight()
、getHeight()
和getWidth()
这些方法上遇到过困惑……后来我发现onSizeChanged()
方法非常有用。
新博客文章:如何在Android中获取自定义视图(扩展View)的宽度和高度尺寸 http://syedrakibalhasan.blogspot.com/2011/02/how-to-get-width-and-height-dimensions.html
getHeight()
和 getMeasuredHeight()
的区别在于,第一个方法返回的是View
的实际高度,第二个方法返回的是View
子元素的总高度。换句话说,getHeight()
返回视图高度,getMeasuredHeight()
返回此视图显示其所有元素所需的高度。
getHeight
方法获取高度,getWidth
方法获取宽度。但是你太早调用这些方法了。
如果你在onCreate
或onResume
中调用它们,视图还没有被绘制出来。你必须在视图被绘制后再调用它们。
Display display = getWindowManager().getDefaultDisplay();
? - Rohith Nandakumar