Фрагменты исчезают после добавления ButtonBar в макет
Я пытаюсь создать основной интерфейс детали с тремя фрагментами и двумя кнопками панели кнопок. По какой-то причине фрагменты не отображаются в пользовательском интерфейсе после добавления панели кнопок. Я подозреваю, что это как-то связано с ориентацией макета, но я оставлю это на усмотрение экспертов.
Перед добавлением панели кнопок
После добавления панели кнопок
Вот 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 ответа
Это должно сделать трюк:
<?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>
Ты первый 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>