Android:如何获得自定义视图的高度和宽度?

可能重复:
如何根据父级的维度来确定Android视图的大小

我如何使用getMeasuredWidth()getMeasuredHeight ? 它总是返回0.这和getHeight()getWidth()什么getWidth()

对不起,这个问题已经被问到了。 我在这里find了答案 – 如何根据父级的维度来确定Android视图的大小

 @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); } 

刚刚得到一个解决scheme来获取自定义视图的高度和宽度:

 @Override protected void onSizeChanged(int xNew, int yNew, int xOld, int yOld){ super.onSizeChanged(xNew, yNew, xOld, yOld); viewWidth = xNew; viewHeight = yNew; } 

它在我的情况下工作。

不要试图让它们在构造函数中。 尝试在onDraw()方法中调用它们。

您可以使用以下方法获取视图的宽度和高度。例如,

 int height = yourView.getLayoutParams().height; int width = yourView.getLayoutParams().width; 

这给出了在XML布局中指定的视图的转换值。

说如果在XML中指定的高度值是53dp,那么你将得到整数的转换值为80。

我也失去了很长一段时间getMeasuredWidth()getMeasuredHeight() getHeight()getWidth() ……….后来我发现onSizeChanged()方法是非常有用的。

新的博客文章:如何获取自定义视图的宽度和高度尺寸(扩展视图)在Android http://syedrakibalhasan.blogspot.com/2011/02/how-to-get-width-and-height-dimensions.html

getHeight()getMeasuredHeight()之间的区别在于第一个方法将返回View实际高度,第二个方法将返回View子项的摘要高度。 另外, getHeight()返回视图高度, getMeasuredHeight()返回高度,这个视图需要显示所有的元素

那么getheight得到的高度,getwidth得到的宽度。 但是你过早地调用了这些方法。 如果你在oncreate或onresume中调用它们,视图还没有绘制。 视图绘制完毕后,您必须调用它。