2010-11-02 140 views

回答

49

对不起,这个问题已经被问到。我在这里找到答案 - 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); 
} 
+1

这回答了“如何使用'''getMeasuredWidth()'''”但不回答原始问题,即“如何获得自定义视图的高度和宽度” – 2017-03-03 21:20:46

1

那么getheight获得高度,getwidth获得宽度。但是你很快就会调用这些方法。如果你在oncreate或onresume中调用它们,视图还没有绘制出来。您必须在绘制视图后调用它。

+0

我在问getMeasuredHeight()和getHeight()之间的区别。好的,我怎么才能获得屏幕的宽度和高度呢? – 2010-11-02 04:48:28

13

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

+8

不是连续调用onDraw?在那里的任何行动可能会对业绩产生负面影响。 – ericosg 2013-12-17 10:48:34

+0

的确,我认为最好的做法是听取onsizechanged事件,并在当时将宽度和高度放在成员变量中。然后,您可以在您的提取方法中使用它们,而无需再次询问它们。 – David 2015-01-29 19:53:52

53

得到customView(扩展视图)的宽度和高度尺寸刚刚得到一个解决方案,使自定义视图的高度和宽度:

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

    viewWidth = xNew; 
    viewHeight = yNew; 
} 

它在我的情况下工作。

+4

我相信这是确定宽度和高度的正确方法。这也是最简单的。 – Kerry 2013-08-16 11:32:21

+3

键盘出现时出现一个问题,称为 – 2015-02-18 05:51:03

12

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

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

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

说,如果身高指定的值53dp在XML中,你会得到整数换算值80

+14

请注意,只要指定了宽度或高度,就会给出宽度/高度。如果你设置了WRAP_CONTENT,这不会给出正确的宽度/高度。它将返回-1或0,具体取决于其“MATCH_PARENT”或“WRAP_CONTENT”。 http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html – Reinherd 2013-10-07 07:35:31

+0

真的,它给我-1,而不是scrollview的实际高度,我需要一个滚动视图高度,在我的情况下,我有scrollview和seekbar,需要同时更改它,即如果我通过scrollview同时滚动x数量seekbar进度应该改变为滚动视图相同。 – 2013-12-26 10:48:19

5

getHeight()getMeasuredHeight()之间的区别在于,第一种方法将返回View的实际高度,第二个将返回View的孩子的总结高度。在其他语言中,getHeight()返回视图高度,getMeasuredHeight()返回此视图需要显示的所有元素的高度

+0

它可以在任何情况下相同?我的价值都是一样的,有可能吗? – 2013-12-26 10:49:35

+0

当然,它可以是相同的。例如,如果您的孩子与其父母具有相同的身高。 – OFFmind 2014-01-11 07:11:26

相关问题