как добавить панель навигации в существующий макет

#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>