2017-04-22 113 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度,这更可能是导航栏,而不是状态栏。好吧,很高兴你明白了。干杯! –

回答