Как реализовать панель навигации внутри фрагмента

Я реализовал TabLayout с ViewPager в Activity. При выборе разных вкладок Viewpager заменяет страницу фрагментом. Но теперь мой вариант использования - реализовать панель навигации внутри Fragment.xml, но я не могу этого сделать.

Когда я пишу DrawerLayout в качестве корневого макета в Fragment.xml, а дочерний макет - это AppBarLayout и FrameLayout.

Состав:

<DrawerLayout>
    <AppBarLayout><ToolBarLayout/><AppBarLayout>
    <FrameLayout/>
    <Navigation Menu/>
</DrawerLayout>

Вся панель инструментов из разных вкладок находится над экраном, и ее высота не в действии. Высота BarSize и высота ToolBar уменьшаются, а TabLayout уменьшается.

Не могли бы вы показать нам свои макеты?

Dima Kozhevin 06.07.2018 21:07
1
1
2 984
1

Ответы 1

понимая, что макет ящика будет размещен внутри фрагмента, тогда просто получите доступ к этому фрагменту через макет xml и добавьте ящик внутри макета.

структура, которой я буду следовать, будет следующей (в псевдокоде):

<relativelayout>
name:outside-container-for-drawerlyout
height: ... and width: ...
 <relativelayout>
  name:actual-continer-for-drawerlayout
  height: ... and width: ...
  <!-- place drawer layout code here -->
  <drawerayout>
  height: ... and width: ...
   <!-- nest navigation view code here -->
   <navview>
    height: ... and width: ...
   </navview>
  </drawerlayout>
 </relativelayout>
</relativelayout>

загляните в документацию, Справочник по документации Android для панели навигации похоже. это гарантирует, что вы разместите свой ящик и его макеты под макетом с вкладками, который вы уже видите.

затем на вашем фрагменте внутри java:

@Override
public View onCreateView(...) {
...
rootView = inflater.inflate(R..., container, false);
handleAccountNavigator();
return rootView;
}
private void handleAccountNavigator(){
this.mDrawerLayout = this.rootView.findViewById(R.id.drawer_layout);
this.mNavigationView = this.rootView.findViewById(R.id.nav_view);
new Handler().post(new Runnable()... to handle drawer actions.
}

В Fragment.xml ToolBar находится первый дочерний элемент, а мой Tablayout находится внизу, который из ActionBarSize, а оставшаяся часть - DrawerLayout шириной 100dp, а высота - Match Parent и layout_above TabLayout. Итак, после ширины 100dp мой frameLayout находится.

Sourav Kumar Mund 07.07.2018 22:09

Другие вопросы по теме