您的位置:首页 > 其它

侧滑菜单NavigationView和SlidingMenu的使用

2016-07-13 11:20 399 查看

一、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推出的新特性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: