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