简体   繁体   中英

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

I'm not good with android layout files and right now I have a file that has a Toolbar widget, and a recycler view widget. Here's the code.

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

How could I add a DrawerLayout to this?

DrawerLayout has two parts

  1. Main Content
  2. Navigation Drawer

In other words, it contains two child views, in which one act as MainContent and other act as Drawer . if you look at simple view

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

在此处输入图片说明


In your case, suppose, you want to add fragment inside your Drawer then you can do as follows :

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM