TableLayout,android:layout_weight和include

时间:2014-09-14 21:39:01

标签: android xml android-layout

我在TableLayout中有一个包含6个布局的布局。我想在横向模式下执行此操作,因为ScrollView在我的场景中会很尴尬。

我有一个48dp高的水平布局,其中包含一个正方形ImageView,一个SeekBar的全重,以及一个正方形ImageButton。我在Java中为ImageView设置了drawable。

在主要布局中,我为每一个使用include,我正在尝试均衡列,因为它们只占用了一半的屏幕,就像这是{{1}的活动一样}作为主题。

然而,当我运行该应用时,我得到了40-60%的不平衡视图。为什么?我做错了什么?

layout-land / main.xml

的一部分
Theme.Holo.Dialog

布局脊/ toast_item.xml

<LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
      ... >
...
<TableLayout
    android:layout_width="match_parent"
    android:layout_weight="1"
    android:stretchColumns="1"
    android:layout_height="wrap_content">

    <TableRow android:layout_width="match_parent" android:layout_height="wrap_content">
        <include android:layout_weight="1" layout="@layout/toast_item" android:id="@+id/systemToast"/>
        <include android:layout_weight="1" layout="@layout/toast_item" android:id="@+id/ringerToast"/>
    </TableRow>

    <TableRow android:layout_width="match_parent" android:layout_height="wrap_content">
        <include android:layout_weight="1" layout="@layout/toast_item" android:id="@+id/notifyToast"/>
        <include android:layout_weight="1" layout="@layout/toast_item" android:id="@+id/mediaToast"/>
    </TableRow>

    <TableRow android:layout_width="match_parent" android:layout_height="wrap_content">
        <include android:layout_weight="1" layout="@layout/toast_item" android:id="@+id/alarmToast"/>
        <include android:layout_weight="1" layout="@layout/toast_item" android:id="@+id/inCallToast"/>
    </TableRow>

</TableLayout>
...
</LinearLayout>

1 个答案:

答案 0 :(得分:1)

我注意到你有android:layout_weight,但我似乎没有android:weightSum

我建议您android:weightSum="2",以便android:layout_weight="1"的两个对象均匀分配。

根据Android Documentation

  

如果有三个文本字段,其中两个声明了一个   重量为1,而另一个没有给予重量,第三个文字字段   没有重量不会增长,只会占据所需的面积   它的内容。另外两个将同等扩展以填补空间   测量完三个场后剩下的。

     

如果第三个字段是   然后给出2的权重(而不是0),那么它现在被宣布更多   比其他人都重要,所以它剩下的一半   空间,而前两个平均分享其余部分。