Android DrawerLayout实现侧拉菜单

xiaoxiao2021-02-28  61

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

效果图

activity_main.xml

[html] view plain copy <?xml version="1.0" encoding="utf-8"?>  <LinearLayout 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:layout_height="match_parent"      tools:context="com.example.lenovo.mydrawerlayout.MainActivity">  <android.support.v4.widget.DrawerLayout      android:layout_width="match_parent"      android:id="@+id/drawer_layout"      android:layout_height="match_parent">      <LinearLayout          android:layout_width="match_parent"          android:layout_height="match_parent"          android:orientation="vertical"          >          <android.support.v7.widget.Toolbar              android:id="@+id/toolbar"              android:layout_width="match_parent"              android:layout_height="?attr/actionBarSize"              android:background="?attr/colorPrimary"              app:popupTheme="@style/AppTheme.PopupOverlay" />          <TextView              android:layout_width="wrap_content"              android:layout_height="wrap_content"              android:text="这是主界面"              />      </LinearLayout>      <LinearLayout          android:layout_width="300dp"          android:layout_height="match_parent"          android:layout_gravity="left"          android:background="#f00"          >         <TextView             android:id="@+id/t"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:text="这是侧拉界面"             />      </LinearLayout>  </android.support.v4.widget.DrawerLayout>    </LinearLayout>   注: DrawerLayout下有两个布局,DrawerLayout的第一个子元素是主要内容,即抽屉没有打开时显示的布局,DrawerLayout的第二个子元素是抽屉中的内容,即抽屉布局, layout_gravity为侧拉方向

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

values下设置styles.xml    为NoActionBar

[html] view plain copy <resources>        <!-- Base application theme. -->      <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">          <!-- Customize your theme here. -->          <item name="colorPrimary">@color/colorPrimary</item>          <item name="colorPrimaryDark">@color/colorPrimaryDark</item>          <item name="colorAccent">@color/colorAccent</item>      </style>      <style name="AppTheme.NoActionBar">          <item name="windowActionBar">false</item>          <item name="windowNoTitle">true</item>      </style>      <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />      <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />    </resources>   MainActivity [html] view plain copy package com.example.lenovo.mydrawerlayout;    import android.os.Bundle;  import android.support.design.widget.Snackbar;  import android.support.v4.view.GravityCompat;  import android.support.v4.widget.DrawerLayout;  import android.support.v7.app.ActionBarDrawerToggle;  import android.support.v7.app.AppCompatActivity;  import android.support.v7.widget.Toolbar;  import android.view.View;  import android.widget.TextView;    public class MainActivity extends AppCompatActivity {        @Override      protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.activity_main);          //Toolbar代替ActionBar          Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);          setSupportActionBar(toolbar);          // DrawerLayout          DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);            //Toolbar上面最左边显示三杠图标监听DrawerLayout          ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(                  this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);          drawer.setDrawerListener(toggle);          toggle.syncState();          //侧拉页面字体          TextView t= (TextView) findViewById(R.id.t);          t.setOnClickListener(new View.OnClickListener() {              @Override              public void onClick(View v) {                  Snackbar.make(v, "侧拉页面", Snackbar.LENGTH_LONG)                          .setAction("Action", null).show();              }          });      }      @Override      public void onBackPressed() {          DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);          if (drawer.isDrawerOpen(GravityCompat.START)) {              drawer.closeDrawer(GravityCompat.START);          } else {              super.onBackPressed();          }      }  } 
转载请注明原文地址: https://www.6miu.com/read-83511.html

最新回复(0)