侧滑菜单用法记录

使用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);
    }
}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值