导航抽屉、工具栏和回收器视图都在同一个 xml 布局文件中?

Navigation Drawer, Toolbar, and Recycler View all in same xml layout file?

我不擅长 android 布局文件,现在我有一个包含工具栏小部件和回收器视图小部件的文件。这是代码。

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  android:orientation="vertical"
  android:layout_width="match_parent"
  android:layout_height="match_parent">

     <android.support.v7.widget.Toolbar
       android:id="@+id/robot_chooser_toolbar"
       android:layout_width="match_parent"
       android:layout_height="?attr/actionBarSize"
       android:background="?attr/colorPrimary"
       android:elevation="4dp"
       android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
       app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

     <android.support.v7.widget.RecyclerView
       android:id="@+id/robot_recycler_view"
       android:paddingTop="5dp"
       android:scrollbars="vertical"
       android:layout_width="match_parent"
       android:layout_height="match_parent"/>

  <TextView
      android:id="@+id/robot_empty_view"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:textSize="20sp"
      android:text="@string/no_robots"
      android:elevation="3dp"
      android:layout_gravity="center"
      android:visibility="gone"
      android:gravity="center" />

</LinearLayout>

如何向其中添加 DrawerLayout?

DrawerLayout 有两部分

  1. 主要内容
  2. 导航抽屉

换句话说,它包含两个子视图,其中一个作为MainContent,一个作为Drawer。 如果你看简单视图

 <DrawerLayout>

   // VIEW 1 - MAIN CONTENT
    <RelativeLayout>

        //whatever you put in this, it will show in your main Content,
        // main Screen

    </RelativeLayout>

  //SECOND CHILD any view, it would be seen in your Side drawer

    <LinearLayout>

        //whatever you put inside, this will be seen on your drawerlayout

    </LinearLayout>
 </DrawerLayout>


在你的情况下,假设你想在 Drawer 中添加片段然后 你可以这样做:

<?xml version="1.0" encoding="utf-8"?>

<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:id="@+id/profileDrawer"
android:layout_height="match_parent" >

   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  android:orientation="vertical"
  android:layout_width="match_parent"
  android:layout_height="match_parent">

 <android.support.v7.widget.Toolbar
   android:id="@+id/robot_chooser_toolbar"
   android:layout_width="match_parent"
   android:layout_height="?attr/actionBarSize"
   android:background="?attr/colorPrimary"
   android:elevation="4dp"
   android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
   app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

 <android.support.v7.widget.RecyclerView
   android:id="@+id/robot_recycler_view"
   android:paddingTop="5dp"
   android:scrollbars="vertical"
   android:layout_width="match_parent"
   android:layout_height="match_parent"/>

 <TextView
  android:id="@+id/robot_empty_view"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:textSize="20sp"
  android:text="@string/no_robots"
  android:elevation="3dp"
  android:layout_gravity="center"
  android:visibility="gone"
  android:gravity="center" />

 </LinearLayout>

<fragment
    android:layout_width="290dp"
    android:layout_gravity="end"
    android:layout_height="match_parent"
    android:name="yourFragmentPackageName"
    android:id="@+id/fragment"
    tools:layout="@layout/drawer_fragment" />

</android.support.v4.widget.DrawerLayout>