将ButtonBar添加到布局后,片段会消失

时间:2014-04-14 19:12:17

标签: android android-layout android-fragments android-linearlayout buttonbar

我正在尝试使用三个片段和两个按钮按钮栏创建一个主细节UI。出于某种原因,添加按钮栏后,片段不会显示在UI中。我怀疑它与布局的方向有关,但我会在这里留给专家。

Before adding the button bar

After adding the button bar

以下是UI的XML布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:baselineAligned="false"
android:orientation="horizontal" >

<fragment
    android:id="@+id/mainBodyFragment"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="1"
    class="com.dreamcode.healttracker.MainBodyArea" />

<fragment
    android:id="@+id/subBodyFragment"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="1"
    class="com.dreamcode.healttracker.SubBodyArea" />

<fragment
    android:id="@+id/symptomFragment"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="3"
    class="com.dreamcode.healttracker.Symptom" />

<LinearLayout
    android:id="@+id/footer"
    style="@android:style/ButtonBar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    android:background="#F0F0F0"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/btn_Generate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:background="@drawable/borderless_button"
        android:text="@string/generate" />

    <View
        android:layout_width="1dp"
        android:layout_height="fill_parent"
        android:background="#909090" />

    <Button
        android:id="@+id/btn_ViewList"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:background="@drawable/borderless_button"
        android:text="@string/viewlist" />
</LinearLayout>

</LinearLayout>

2 个答案:

答案 0 :(得分:0)

您的第一个LinearLayout的方向是水平的(因此一切都将与其他人相邻),而不是使用width="match_parent"添加按钮栏,因此按钮栏使用保持垂直空间。如果您想将片段放在每个片段之下,请将第一个片段的orientation更改为垂直片段。如果片段彼此相邻且下面的按钮栏使用以下代码:(代码中没有关闭第一个LinearLayout!)

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:baselineAligned="false"
    android:orientation="vertical" >
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
<fragment
    android:id="@+id/mainBodyFragment"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="1"
    class="com.dreamcode.healttracker.MainBodyArea" />

<fragment
    android:id="@+id/subBodyFragment"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="1"
    class="com.dreamcode.healttracker.SubBodyArea" />

<fragment
    android:id="@+id/symptomFragment"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="3"
    class="com.dreamcode.healttracker.Symptom" />
</LinearLayout> <!-- added -->
<LinearLayout
    android:id="@+id/footer"
    style="@android:style/ButtonBar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    android:background="#F0F0F0"
    android:orientation="horizontal" >

<Button
    android:id="@+id/btn_Generate"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:background="@drawable/borderless_button"
    android:text="@string/generate" />

<View
    android:layout_width="1dp"
    android:layout_height="fill_parent"
    android:background="#909090" />

<Button
    android:id="@+id/btn_ViewList"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:background="@drawable/borderless_button"
    android:text="@string/viewlist" />
</LinearLayout>
</LinearLayout> 

答案 1 :(得分:0)

这应该可以解决问题:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:id="@+id/footer"
        style="@android:style/ButtonBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="#F0F0F0"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/btn_Generate"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="@drawable/borderless_button"
            android:text="@string/generate" />

        <View
            android:layout_width="1dp"
            android:layout_height="fill_parent"
            android:background="#909090" />

        <Button
            android:id="@+id/btn_ViewList"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="@drawable/borderless_button"
            android:text="@string/viewlist" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@id/footer"
        android:baselineAligned="false"
        android:orientation="horizontal" >

        <fragment
            android:id="@+id/mainBodyFragment"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            class="com.dreamcode.healttracker.MainBodyArea" />

        <fragment
            android:id="@+id/subBodyFragment"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            class="com.dreamcode.healttracker.SubBodyArea" />

        <fragment
            android:id="@+id/symptomFragment"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="3"
            class="com.dreamcode.healttracker.Symptom" />
    </LinearLayout>

</RelativeLayout>