2010-11-02 152 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

相關問題