Android DrawerLayout实现侧拉菜单

源码:http://download.csdn.NET/detail/lm_zp/9562019

效果图

Android DrawerLayout实现侧拉菜单_第1张图片

Android DrawerLayout实现侧拉菜单_第2张图片

activity_main.xml

[html] view plain copy
  1. xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     xmlns:tools="http://schemas.android.com/tools"  
  4.     xmlns:app="http://schemas.android.com/apk/res-auto"  
  5.     android:layout_width="match_parent"  
  6.     android:layout_height="match_parent"  
  7.     tools:context="com.example.lenovo.mydrawerlayout.MainActivity">  
  8. <android.support.v4.widget.DrawerLayout  
  9.     android:layout_width="match_parent"  
  10.     android:id="@+id/drawer_layout"  
  11.     android:layout_height="match_parent">  
  12.     <LinearLayout  
  13.         android:layout_width="match_parent"  
  14.         android:layout_height="match_parent"  
  15.         android:orientation="vertical"  
  16.         >  
  17.         <android.support.v7.widget.Toolbar  
  18.             android:id="@+id/toolbar"  
  19.             android:layout_width="match_parent"  
  20.             android:layout_height="?attr/actionBarSize"  
  21.             android:background="?attr/colorPrimary"  
  22.             app:popupTheme="@style/AppTheme.PopupOverlay" />  
  23.         <TextView  
  24.             android:layout_width="wrap_content"  
  25.             android:layout_height="wrap_content"  
  26.             android:text="这是主界面"  
  27.             />  
  28.     LinearLayout>  
  29.     <LinearLayout  
  30.         android:layout_width="300dp"  
  31.         android:layout_height="match_parent"  
  32.         android:layout_gravity="left"  
  33.         android:background="#f00"  
  34.         >  
  35.        <TextView  
  36.            android:id="@+id/t"  
  37.            android:layout_width="wrap_content"  
  38.            android:layout_height="wrap_content"  
  39.            android:text="这是侧拉界面"  
  40.            />  
  41.     LinearLayout>  
  42. android.support.v4.widget.DrawerLayout>  
  43.   
  44. LinearLayout>  


注: DrawerLayout下有两个布局,DrawerLayout的第一个子元素是主要内容,即抽屉没有打开时显示的布局,DrawerLayout的第二个子元素是抽屉中的内容,即抽屉布局, layout_gravity为侧拉方向



因为用到 Toolbar所以要把ActionBar替换了所以设置

values下设置styles.xml    为NoActionBar

[html] view plain copy
  1. <resources>  
  2.   
  3.       
  4.     <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">  
  5.           
  6.         <item name="colorPrimary">@color/colorPrimaryitem>  
  7.         <item name="colorPrimaryDark">@color/colorPrimaryDarkitem>  
  8.         <item name="colorAccent">@color/colorAccentitem>  
  9.     style>  
  10.     <style name="AppTheme.NoActionBar">  
  11.         <item name="windowActionBar">falseitem>  
  12.         <item name="windowNoTitle">trueitem>  
  13.     style>  
  14.     <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />  
  15.     <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />  
  16.   
  17. resources>  


MainActivity
[html] view plain copy
  1. package com.example.lenovo.mydrawerlayout;  
  2.   
  3. import android.os.Bundle;  
  4. import android.support.design.widget.Snackbar;  
  5. import android.support.v4.view.GravityCompat;  
  6. import android.support.v4.widget.DrawerLayout;  
  7. import android.support.v7.app.ActionBarDrawerToggle;  
  8. import android.support.v7.app.AppCompatActivity;  
  9. import android.support.v7.widget.Toolbar;  
  10. import android.view.View;  
  11. import android.widget.TextView;  
  12.   
  13. public class MainActivity extends AppCompatActivity {  
  14.   
  15.     @Override  
  16.     protected void onCreate(Bundle savedInstanceState) {  
  17.         super.onCreate(savedInstanceState);  
  18.         setContentView(R.layout.activity_main);  
  19.         //Toolbar代替ActionBar  
  20.         Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);  
  21.         setSupportActionBar(toolbar);  
  22.         // DrawerLayout  
  23.         DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);  
  24.   
  25.         //Toolbar上面最左边显示三杠图标监听DrawerLayout  
  26.         ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(  
  27.                 this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);  
  28.         drawer.setDrawerListener(toggle);  
  29.         toggle.syncState();  
  30.         //侧拉页面字体  
  31.         TextView t= (TextView) findViewById(R.id.t);  
  32.         t.setOnClickListener(new View.OnClickListener() {  
  33.             @Override  
  34.             public void onClick(View v) {  
  35.                 Snackbar.make(v, "侧拉页面", Snackbar.LENGTH_LONG)  
  36.                         .setAction("Action", null).show();  
  37.             }  
  38.         });  
  39.     }  
  40.     @Override  
  41.     public void onBackPressed() {  
  42.         DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);  
  43.         if (drawer.isDrawerOpen(GravityCompat.START)) {  
  44.             drawer.closeDrawer(GravityCompat.START);  
  45.         } else {  
  46.             super.onBackPressed();  
  47.         }  
  48.     }  

你可能感兴趣的:(Android DrawerLayout实现侧拉菜单)