为什么我的带有权重的LinearLayout会为某些维度组合留下底部的像素空间?

时间:2015-01-27 22:42:42

标签: android android-layout android-studio android-ui

我正在使用LinearLayout构建UI,我使用layout_weight指定相对大小。我看到一个问题,某些权重组合会导致屏幕底部的空间很小。我的印象是它会扩展每个子视图,使它们完全填充父LinearLayout - 这不是真的吗?我怎样才能使用我想要的比例,但却阻止空间显示在底部?

我在Android Studio布局工具中尝试过的所有屏幕尺寸都会出现这种情况。

这些(不需要的)权重会导致屏幕被完全填满: 0.15,0.75,0.05

这些(所需)重量导致底部的微小空间:0.15,0.75,0.1

screenshot

这是我的XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#22FF22"
    tools:context="...">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.15"
        android:textSize="31dp"
        android:gravity="center"
        android:background="@color/blue90"
        android:text="HEADER" />

    <ListView
        android:id="@+id/listview_workout_selection"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.75">
        </ListView>

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:background="@color/blue90"
        android:layout_weight="0.05"></FrameLayout>

</LinearLayout>

2 个答案:

答案 0 :(得分:0)

它似乎只是一个Android Studio故障(我怀疑它是由于它处理权重的浮点值的方式),即它不会在真实设备上复制。如果它让你烦恼,只需将每个重量乘以100即可。

答案 1 :(得分:0)

修复是将所需的权重乘以10:

1.5,7.5,1

必须是由小的分数权重引起的一些舍入问题。