Вот как я это получил, используя упомянутую библиотеку:
Этот макет содержит скользящее меню верхнего уровня, которое ссылается на макет меню (fragment_nav_menu) и макет со ссылкой на макет подменю, как показано выше.
<com.jeremyfeinstein.slidingmenu.lib.SlidingMenu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:sliding="http://schemas.android.com/apk/res-auto"
android:id="@+id/slidingMenuRoot"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
sliding:viewAbove="@layout/sliding_sub_menu"
sliding:viewBehind="@layout/fragment_nav_menu"
sliding:touchModeAbove="fullscreen"
/>
Это будет меню второго уровня (sliding_sub_menu.xml), обратите внимание, что то, что вы установите здесь как viewAbove, будет фактическим содержимым верхнего уровня.
<com.jeremyfeinstein.slidingmenu.lib.SlidingMenu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:sliding="http://schemas.android.com/apk/res-auto"
android:id="@+id/slidingSubMenuRoot"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
sliding:viewAbove="@layout/fragment_content"
sliding:viewBehind="@layout/fragment_sliding_menu"
sliding:touchModeAbove="fullscreen"
/>
Макет содержимого (fragment_content.xml) может быть таким, простой FrameLayout, а затем программно добавить нужный фрагмент.
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainContentFrame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/app_background"
/>
Аналогичным образом содержимое скользящего подменю определяется в файле макета (fragment_sliding_menu.xml) и используется программно для объявления экземпляра фрагмента.
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainContentFrame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/app_background"
/>
Чтобы добавить фрагмент в эти FrameLayouts, используйте что-то вроде этого (возможно, также удалив потенциальный предыдущий фрагмент перед добавлением нового):
FragmentTransaction fragTrans = getSupportFragmentManager().beginTransaction();
fragTrans.add(R.id.slidingSubMenuFrame, SubMenuFragment.newInstance(this));
fragTrans.commit();
Я еще не тестировал это много, но, кажется, работает. Конечно, для реализации желаемого поведения меню (закрыть прослушиватель, выбрать элементы и т. д.) требуется дополнительная логика.
person
mdelolmo
schedule
24.07.2013