侧滑菜单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推出的新特性。
相关文章推荐
- SAE 1939学习笔记(三)
- android camera HAL v3.0详细介绍(二)
- JQuery简单的按钮点击和文本框输入事件
- internet connection sharing has been disabled by the network administrator
- CentOS7安装mysql-server
- 关于空指针NULL、野指针、通用指针
- 获取元素html
- WEB应用程序开发与部署
- leangoo里怎么邀请成员加入看板?
- 最短路算法优良比较
- SwipeMenuListView实现点击和侧滑删除
- android camera HAL v3.0详细介绍(一)
- ansible module: group_by
- 对话框中消息的路由
- 文献查找方法
- Ubuntu16.04系统下CUDA7.5配置Caffe教程
- hdu4676 Sum Of Gcd
- 常用下载地址ed2k
- 标准IO流与系统调用write read区别
- SpringMVC+Spring+Mybatis整合配置