侧滑菜单用法记录

来源:互联网 发布:淘宝同学 编辑:程序博客网 时间:2024/06/03 17:28

使用actionBar实现侧滑菜单
actionBar侧滑菜单是谷歌官方的模版,有着很多限制比如图标固定,菜单样式固定,但是如果只是实现简单的侧滑菜单,使用这个还是不错的。
使用5.0兼容库 选择file>project Structure>module(自己开发module)>Dependencies>点击右上角+号>LibraryDependency>选择com.android.support:design:25.1.0
1、首先实现布局页面

<?xml version="1.0" encoding="utf-8"?><!--菜单布局--><android.support.v4.widget.DrawerLayout    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/activity_sliding_menu"    android:layout_width="match_parent"    android:layout_height="match_parent"    >    <LinearLayout        android:layout_width="match_parent"        android:layout_height="match_parent"        android:orientation="vertical">        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="主界面"/>    </LinearLayout>    <android.support.design.widget.NavigationView        android:layout_width="match_parent"        android:layout_height="match_parent"        android:layout_gravity="start"        app:headerLayout="@layout/nav_head_layout"        app:menu="@menu/nav_menu_list">    </android.support.design.widget.NavigationView></android.support.v4.widget.DrawerLayout>

布局写好后在 android.support.design.widget.NavigationView 控件下 需要添加2个属性分别对应2个布局文件。app:menu=”@menu/nav_menu_list”>需要填充布局作为侧滑的滑出页面布局代码如下(注意这里是xml文件,并且需要在‘src>main>res’文件夹下新建‘menu’文件夹然后再新建xml文件)

<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android">    <!--创建子菜单-->    <group        android:id="@+id/group01"        >        <item            android:id="@+id/string1"            android:icon="@mipmap/ic_launcher"            android:title="我是菜单1"            ></item>        <item            android:icon="@mipmap/ic_launcher"            android:title="我是菜单2"            ></item>    </group>    <group        android:id="@+id/group02"        >        <item            android:icon="@mipmap/ic_launcher"            android:title="我是菜单A"            ></item>        <item            android:icon="@mipmap/ic_launcher"            android:title="我是菜单B"            >            <menu>                <item android:title="B的子菜单"></item>            </menu>        </item>    </group></menu>

上面的group标签是给侧滑菜单下的菜单添加子菜单的注意只有在添加id的情况下才可以看见效果。app:headerLayout=”@layout/nav_head_layout” 布局文件代码如下:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"              android:orientation="vertical"              android:layout_width="match_parent"              android:background="@drawable/ic_user_background"              android:layout_height="150dp">    <ImageView        android:id="@+id/iv_head_layout_icon"        android:layout_margin="10dp"        android:layout_width="48dp"        android:src="@drawable/ic_account_circle_white_48dp"        android:layout_height="48dp"/>    <TextView        android:layout_margin="10dp"        android:layout_width="wrap_content"        android:text="点击登陆"        android:textColor="#FFF"        android:layout_height="wrap_content"/></LinearLayout>

布局写好后,在activity写开始写逻辑

package com.example.newdatas.androidBase;import android.os.Bundle;import android.support.annotation.NonNull;import android.support.design.widget.NavigationView;import android.support.v4.widget.DrawerLayout;import android.support.v7.app.ActionBar;import android.support.v7.app.ActionBarDrawerToggle;import android.support.v7.app.AppCompatActivity;import android.view.MenuItem;import android.widget.Toast;import com.example.newdatas.R;import butterknife.Bind;import butterknife.ButterKnife;public class SlidingMenu extends AppCompatActivity {    @Bind(R.id.activity_sliding_menu)    DrawerLayout mActivitySlidingMenu;    @Bind(R.id.NavigationView)    NavigationView mNavigationView;    private ActionBarDrawerToggle mActionBarDrawerToggle;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_sliding_menu);        ButterKnife.bind(this);//        初始化actionbar        initActionBar();        //设置Navigation的点击事件        mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {            @Override            public boolean onNavigationItemSelected(@NonNull MenuItem item) {                switch (item.getItemId()) {                    case R.id.string1:                        Toast.makeText(SlidingMenu.this, "ssss", Toast.LENGTH_SHORT).show();                        break;                }                return true;            }        });    }    private void initActionBar() {//        拿到actionbar        ActionBar supportActionBar = getSupportActionBar();//        设置标题        supportActionBar.setTitle("标题");//       显示箭头 固定写法 显示并且可以先显示        supportActionBar.setDefaultDisplayHomeAsUpEnabled(true);        supportActionBar.setDisplayHomeAsUpEnabled(true);//        显示汉堡箭头//        菜单开关对象        mActionBarDrawerToggle = new ActionBarDrawerToggle(this, mActivitySlidingMenu, R.string.open, R.string.a);//        进行同步        mActionBarDrawerToggle.syncState();//        设置点击事件        mActivitySlidingMenu.addDrawerListener(mActionBarDrawerToggle);    }//    设置点击事件//    slelct//    复写方法ctrl+a    @Override    public boolean onOptionsItemSelected(MenuItem item) {        switch (item.getItemId()) {//            箭头对象            case android.R.id.home://                拿到菜单箭头对象                mActionBarDrawerToggle.onOptionsItemSelected(item);                break;        }        return super.onOptionsItemSelected(item);    }}

最后完成后的样子
这里写图片描述

0 0