2017-04-22 49 views
0

我在XML文件中定義的一組的LinearLayout,每個具有相關聯的layout_weight的Android layout_weight的getHeight()不準確

這是XML的一部分:

<LinearLayout 
    android:id="@+id/container" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="0.26" 
    android:orientation="horizontal"></LinearLayout> 

我總共有7例如LinearLayout的LinearLayout,每個LinearLayout都有一個賦值layout_weight。所有layout_weight值都精確地加到1.

因此,我期望上面的佈局包含總屏幕高度的26%。

但是在計算:

final LinearLayout container = (LinearLayout)findViewById(R.id.container); 

    container.post(new Runnable() { 
     @Override 
     public void run() { 
      Log.e("mytag", "container Height: " + container.getHeight()); 
     } 
    }); 

container.getHeight()只返回我值474,而我的屏幕高度爲1920像素。 1920年的26​​%應該是499.2 px。 474的值離期望值499相當遠。

我的getHeight方法不準確,或者我設置layout_weight的方式?

謝謝您的時間

+0

父'LinearLayout'的實際高度是多少?你是否考慮了狀態欄? –

+1

啊,謝謝你,邁克指出。事實證明,我測試的Nexus仿真器包含虛擬主頁,後退按鈕,位於佔用空間的屏幕底部!我沒有解釋它們。問題解決了:) – Marcus

+0

啊,是的,那會更有意義。從你給出的數字來看,總高度大約是96度,這更可能是導航欄,而不是狀態欄。好吧,很高興你明白了。乾杯! –

回答