#android #navigation-drawer
#Android #навигация-панель
Вопрос:
У меня есть макет с listview.xml как показано ниже
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@ id/main">
<ListView
android:id="@ id/Planets"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:divider="#b5b5b5"
android:dividerHeight="2dp"
android:background="#fff"/>
<ListView
android:id="@ id/stars"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:divider="#b5b5b5"
android:dividerHeight="2dp" >
</ListView>
</RelativeLayout>
Я хочу добавить панель навигации в этот макет. Для этой цели у меня есть этот макет.
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@ id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- Framelayout to display Fragments -->
<FrameLayout
android:id="@ id/frame_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<!-- Listview to display slider menu -->
<ListView
android:id="@ id/list_slidermenu"
android:layout_width="240dp"
android:layout_height="150dp"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:divider="@color/list_divider"
android:dividerHeight="1dp"
android:listSelector="@drawable/list_selector"
android:background="@color/list_background"/>
</android.support.v4.widget.DrawerLayout>
Я не знаю, как интегрировать панель в мой listview.xml , Я делал что-то подобное, но это не работает для меня.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@ id/main">
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@ id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- Framelayout to display Fragments -->
<FrameLayout
android:id="@ id/frame_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<!-- Listview to display slider menu -->
<ListView
android:id="@ id/list_slidermenu"
android:layout_width="240dp"
android:layout_height="150dp"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:divider="@color/list_divider"
android:dividerHeight="1dp"
android:listSelector="@drawable/list_selector"
android:background="@color/list_background"/>
</android.support.v4.widget.DrawerLayout>
<ListView
android:id="@ id/planets"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:divider="#b5b5b5"
android:dividerHeight="2dp"
android:background="#fff"/>
<ListView
android:id="@ id/stars"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:divider="#b5b5b5"
android:dividerHeight="2dp" >
</ListView>
</RelativeLayout>
и я не знаю, как правильно это сделать. любая помощь будет оценена.
Комментарии:
1. Что вы имеете в виду, как интегрировать панель в мой listview.xml ? Ваш второй макет кажется правильным.
2. да, я должен интегрировать в свой list.xml . Я хочу объединить их в один макет.
3. ваш listview.xml это макет для вашего Фрагмента, верно?
4. нет, это для действия.
5. Для вашего подхода у вас должен быть listview.xml установите макет для фрагмента (например, ListViewFragment) и добавьте его в FrameLayout, который является частью вашего макета Activity, внутри метода onCreate().
Ответ №1:
Вы должны создать фрагмент для хранения ваших двух ListViews
layout ( listview.xml
). Этот фрагмент будет заполнять ваш FrameLayout
(то есть часть вашего Activity
макета) компонент во время выполнения.
Затем ваша активность будет иметь a DrawerLayout
с a FrameLayout
внутри него (который содержит любой макет фрагмента, который вы определяете внутри него) и a ListView
, который содержит пункты меню вашего ящика.
Для получения дополнительной информации проверьте эту ссылку, чтобы реализовать правильный подход к созданию DrawerLayout.
Ответ №2:
DrawerLayout должен быть корневым элементом файла макета
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@ id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- Framelayout to display Fragments -->
<FrameLayout
android:id="@ id/frame_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@ id/main">
<!-- Listview to display slider menu -->
<ListView
android:id="@ id/list_slidermenu"
android:layout_width="240dp"
android:layout_height="150dp"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:divider="@color/list_divider"
android:dividerHeight="1dp"
android:listSelector="@drawable/list_selector"
android:background="@color/list_background"/>
<ListView
android:id="@ id/planets"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:divider="#b5b5b5"
android:dividerHeight="2dp"
android:background="#fff"/>
<ListView
android:id="@ id/stars"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:divider="#b5b5b5"
android:dividerHeight="2dp" >
</ListView>
</RelativeLayout>
</android.support.v4.widget.DrawerLayout>