可能重复:
How to size an Android view based on its parent’s dimensions
如何使用getMeasuredWidth()
和getMeasuredHeight
?它总是返回0.这与getHeight()
和getWidth()
之间的差异是什么?
答案 0 :(得分:61)
刚刚获得了获取自定义视图的高度和宽度的解决方案:
@Override
protected void onSizeChanged(int xNew, int yNew, int xOld, int yOld){
super.onSizeChanged(xNew, yNew, xOld, yOld);
viewWidth = xNew;
viewHeight = yNew;
}
它在我的案例中工作。
答案 1 :(得分:54)
抱歉,这个问题已经被问到了。我在这里找到了答案 - How to size an Android view based on its parent's dimensions
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int parentWidth = MeasureSpec.getSize(widthMeasureSpec);
int parentHeight = MeasureSpec.getSize(heightMeasureSpec);
this.setMeasuredDimension(parentWidth, parentHeight);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
答案 2 :(得分:13)
不要试图将它们放在构造函数中。尝试使用onDraw()
方法调用它们。
答案 3 :(得分:13)
您可以使用以下方法获取视图的宽度和高度, 例如,
int height = yourView.getLayoutParams().height;
int width = yourView.getLayoutParams().width;
这给出了在XML布局中指定的视图的转换值。
假设在XML中指定的高度值是53dp,您将获得整数转换后的值为80.
答案 4 :(得分:9)
我在getMeasuredWidth()
和getMeasuredHeight()
getHeight()
以及getWidth()
长时间失踪..........后来我发现{{1}方法非常有帮助。
新博客文章:如何在Android http://syedrakibalhasan.blogspot.com/2011/02/how-to-get-width-and-height-dimensions.html中获取customView(扩展视图)的宽度和高度尺寸
答案 5 :(得分:6)
getHeight()
和getMeasuredHeight()
之间的区别在于,第一种方法会返回View
的实际高度,第二种方法会返回View
个孩子的汇总高度。换句话说,getHeight()
返回视图高度,getMeasuredHeight()
返回此视图需要显示其所有元素的高度
答案 6 :(得分:1)
get getheight获得高度,getwidth获得宽度。但是你太快就会调用这些方法。如果您在oncreate或onresume中调用它们,则视图尚未绘制。您必须在绘制视图后调用它。