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

时间:2010-11-02 04:35:23

标签: android views

  

可能重复:
  How to size an Android view based on its parent’s dimensions

如何使用getMeasuredWidth()getMeasuredHeight?它总是返回0.这与getHeight()getWidth()之间的差异是什么?

7 个答案:

答案 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中调用它们,则视图尚未绘制。您必须在绘制视图后调用它。