侧滑菜单NavigationView和SlidingMenu的使用

一、NavigationView使用

1、NavigationView是android5.0推出的,所以要在相应Module的build.gradle中添加依赖

compile 'com.android.support:design:23.4.0'

2、xml文件

<?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:id="@+id/drawerLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.ws.learning.activity.DesignActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

    <!--你的布局-->

    </LinearLayout>

    <android.support.design.widget.NavigationView
        android:id="@+id/nv_main_navigation"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="end"
        app:headerLayout="@layout/navigation_header"
        app:menu="@menu/drawer_view"/>
</android.support.v4.widget.DrawerLayout>

需要注意的是三点

1)android:layout_gravity=”end”
该属性是设置菜单是从哪个方向滑出,end是右侧,start是左侧

2)app:headerLayout=”@layout/header_view”
该属性是设置侧滑菜单的头部样式,该项不是必须的

3)app:menu=”@menu/menu_view”
该属性是设置菜单项的,该项是必须的

4)NavigationView的宽度最好不要过大(最好应该不超过320dp)

2、header_view.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:background="?attr/colorPrimaryDark"
    android:gravity="center"
    android:orientation="vertical"
    android:padding="16dp"
    android:theme="@style/ThemeOverlay.AppCompat.Dark">

    <ImageView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_marginTop="16dp"
        android:background="@mipmap/ic_launcher"/>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:gravity="center"
        android:text="测试"
        android:textAppearance="@style/TextAppearance.AppCompat.Body1"
        android:textSize="20sp"/>

</LinearLayout>

3、menu_view(该文件时在res/menu目录下的)

<?xml version="1.0" encoding="utf-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <group android:checkableBehavior="single">
        <item
            android:id="@+id/nav_home"
            android:icon="@mipmap/ic_launcher"
            android:title="Hello"/>
        <item
            android:id="@+id/nav_messages"
            android:icon="@mipmap/ic_launcher"
            android:title="你好"/>
        <item
            android:id="@+id/nav_friends"
            android:icon="@mipmap/ic_launcher"
            android:title="How are you"/>
        <item
            android:id="@+id/nav_discussion"
            android:icon="@mipmap/ic_launcher"
            android:title="怎么老是你"/>
    </group>

    <item android:title="语言">
        <menu>
            <item
                android:icon="@mipmap/ic_launcher"
                android:title="Android"/>
            <item
                android:icon="@mipmap/ic_launcher"
                android:title="iOS"/>
            <item
                android:icon="@mipmap/ic_launcher"
                android:title="PC"/>
        </menu>
    </item>

</menu>

4、可以通过java代码控制菜单的弹出与隐藏

1)弹出侧滑菜单

mDrawerLayout.openDrawer(mNavigationView);

2)关闭侧滑菜单

mDrawerLayout.closeDrawers();

5、为侧滑菜单添加点击事件

//这里使Activity实现了NavigationView.OnNavigationItemSelectedListener接口
mNavigationView.setNavigationItemSelectedListener(this);

//重写抽象方法
 @Override
    public boolean onNavigationItemSelected(MenuItem item) {
        item.setCheckable(true);
        //可以通过item.getTitle()获取侧滑菜单上的文字,该处做一些事件
        return true;
    }

二、SlidingMenu使用

使用SlidingMenu需要先导入这个库,然后在自己的项目中添加依赖,若报错可能是因为V4包冲突了,所以删除自己项目中的V4包就可以了。

使用时只需自己创建一个xml的布局文件, 也就是你的侧滑菜单的文件(代码就省略了)。
接下来就是直接在java代码中进行配置了,主要有以下几个属性需要配置

slidingMenu = new SlidingMenu(this);

//设置菜单的滑动模式
slidingMenu.setMode(SlidingMenu.LEFT);

//设置侧滑菜单的布局
slidingMenu.setMenu(R.layout.left);

//设置要滑动菜单,触碰屏幕的范围
slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); 

//设置菜单的宽度
slidingMenu.setBehindWidth(300); 

//设置所依附的activity
slidingMenu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);

更多SlidingMenu的属性介绍可以参考这里

小结:android本身还提供了一个抽屉布局,这里就不介绍了,也是利用的DrawerLayout;既然android5.0已经集成了一个新的侧滑菜单的控件并且使用起来也挺简单易懂的,直接使用就可以了,若果要使用SlidingMenu还要依赖一个库,所以个人推荐使用5.0推出的新特性。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值