2016-12-27 3 views
0

Я использую эту библиотеку: https://github.com/mikepenz/MaterialDrawer У меня есть NavigationDrawer на левом элементов навигации, а справа у меня есть дополнительный ящик:NavigationDrawer с пользовательским фрагментом внутри?

new DrawerBuilder() 
     .withActivity(this) 
     .withDrawerGravity(Gravity.END) 
     .append(result); 

У меня также есть фрагмент с RecyclerView и некоторым дополнительным видом внутри:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@color/listBackground"> 

<android.support.v7.widget.RecyclerView 
    android:id="@+id/contactsList" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_marginLeft="16dp" 
    android:layout_marginRight="16dp" 
    tools:listitem="@layout/fragment_contacts_item" /> 

<LinearLayout 
    android:id="@+id/layoutNoContacts" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_centerVertical="true" 
    android:orientation="vertical" 
    android:paddingBottom="128dp" 
    android:visibility="gone"> 

    <ImageView 
     android:id="@+id/imageView2" 
     android:layout_width="wrap_content" 
     android:layout_height="100dp" 
     android:scaleType="fitCenter" 
     app:srcCompat="@drawable/sad" /> 
</LinearLayout> 

Этот фрагмент раздувает макет и добавляет записи в RecyclerView.

Это моя основная раскладка:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/main_content" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<android.support.design.widget.AppBarLayout 
    android:id="@+id/appbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:paddingTop="@dimen/appbar_padding_top" 
    android:theme="@style/AppTheme.AppBarOverlay"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="?attr/colorPrimary"> 

    </android.support.v7.widget.Toolbar> 
</android.support.design.widget.AppBarLayout> 

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_alignParentTop="true" 
    android:background="@color/listBackground"> 

    <FrameLayout 
     android:id="@+id/container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_marginTop="80dp" 
     android:clickable="true" /> 
</RelativeLayout> 

Как я могу показать этот пользовательский фрагмент, который показывает мои контакты в NavigationDrawer во все времена вместо элементов навигации?

ответ

2

Вы можете использовать Android Drawer Layout вместо MaterialDrawer. Он работает как шарм с пользовательскими фрагментами.

<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"> 
    <!-- The main content view --> 
    <FrameLayout 
     android:id="@+id/content_frame" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 
    <!-- The navigation drawer --> 
    <fragment android:name="com.example.YourFragment" 
     android:id="@+id/left_drawer" 
     android:layout_weight="1" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" /> 
</android.support.v4.widget.DrawerLayout> 
+0

Большое спасибо за помощь! Я добавил свой основной файл макета, где мне нужно его добавить? И как бы я разместил там контент? Просто с регулярным FragmentTransaction? – user754730

+1

Фрагмент статически добавляется на основе атрибута 'android: name'. – EpicPandaForce

+1

Этот макет должен использоваться в действии (макет содержания активности), где должен быть представлен ваш ящик. Если вы хотите добавить фрагмент динамически - вы должны заменить содержимое тега и добавить фрагмент в этот макет кадра с регулярным FragmentTransaction. Подробнее см. В документации фрагментов: https://developer.android.com/guide/components/fragments.html. –