NavigationView的简单使用
来源:互联网 发布:nginx 经典书籍 编辑:程序博客网 时间:2024/06/06 02:31
NavigationView
简介:
在android开发中,我们经常会看到一种UI的是用,那就是侧边栏,侧边栏这种控件能给用户带来极大的便利,以及很好的交互效果,当然我们实现侧边栏的方式也有很多种,网上也有很多这些第三方框架来提供使用,我现在要说的就是在android5.0后,google提出了meteral design这样的一个设计理念之后,提供给用户官方的侧边栏的控件,这就是NavigationView。
使用:
既然作为一个控件,我们当然首先要将它放到xml里去展示,所以,首先我们就来先说一说他在xml文件中的使用方式。
xml中的使用:
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" android:background="@color/white"> <!--内容区--> <RelativeLayout android:id="@+id/main_content" android:layout_width="match_parent" android:layout_height="match_parent"> </RelativeLayout> <!--左侧导航菜单--> <android.support.design.widget.NavigationView android:id="@+id/navigation_view" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" app:headerLayout="@layout/navigation_header" app:menu="@menu/drawer" /></android.support.v4.widget.DrawerLayout>
以上就是navigationView在xml中的代码,当然有些读者可能看到DrawerLayout这个东西的时候心里产生一丝疑惑,这个DrawerLayout究竟是个什么东西呢,别着急,下面我们就来说一说这个DrawerLayuut。
DrawerLayout简介:“
drawerLayout是Support Library包中实现了侧滑菜单效果的控件,可以说drawerLayout是因为第三方控件如MenuDrawer等的出现之后,google借鉴而出现的产物。drawerLayout分为侧边菜单和主内容区两部分,侧边菜单可以根据手势展开与隐藏(drawerLayout自身特性),主内容区的内容可以随着菜单的点击而变化(这需要使用者自己实现)。这里我们也就不再去详细解释DrawerLayout其他方面了,具体的话可以看下官方文档,
回到我们的NavigationView中,我们看到在这个xml视图中,结构还是比较明了的,RelativeLayout中负责展示页面的内容区域,而NavigationView就是侧滑菜单中的内容了,我们来看看NavigationView的一些常用属性吧,
- app:headerLayout=”” 头部的视图
- app:menu=”“这个就是菜单栏了 ,我们可以在res目录下建立一个menu文件夹,然后创建menu的资源文件,菜单栏具体怎么用我们在后面来看
- app:itemIconTint=”“这个属性是设置菜蛋栏中每行icon的颜色,默认的时候是灰色的
还有一些其他的属性大家具体可以看看文档。这里就简单介绍些使用到的,下面我们就来说说menu的使用。
menu的使用:
我们可以在res下建立menu目录,然后在menu目录中建立一个menu的资源文件
<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity"> <group android:checkableBehavior="single"> <item android:id="@+id/navigation_item_home" android:icon="@mipmap/ic_launcher" android:title="我的位置" /> <item android:id="@+id/navigation_item_blog" android:icon="@mipmap/ic_launcher" android:title="公交查询" /> <item android:id="@+id/navigation_item_about" android:icon="@mipmap/ic_launcher" android:title="每日新闻" /> </group></menu>
上面就拥有了菜单栏三个选项卡,icon就是每个选项卡的图标,title就是选项卡的名字
在java代码中的使用:
说了这么多,其实我们最核心的使用部分还是要在java代码中,毕竟在xml里的这些只能让这个侧滑栏展现出来,那么菜单栏的点击功能呢、头部u视图的点击功能呢,我们还是一头雾水。
- 按照惯例,我们依旧是要先findViewById这个控件,这里我就不写了,
- 既然我们要做头部视图的点击事件,我们当然要先获取到这个头部视图。navigationView.getHeaderView(0)
这个方法返回一个View,而这个View就是侧滑栏头部的View,那么我们就可以通过这个View去FindViewById获取到头部视图中的控件,从而实现每个控件的点击事件,是不是很简单。
- 我们之前在xml里不是设置过itemIcon的颜色吗,因为他默认是灰色的,但是这里我们可以恢复它原本的颜色,navigationView.setItemIconTintList(null)
这样就恢复它原本的颜色了
- 我们说了头部视图的点击事件,那就来说下选项卡的点击事件吧,
这样就实现了选项卡的点击事件
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem item) {
//处理item的点击事件
switch (item.getItemId()){
case R.id.navigation_item_home:
Toast.makeText(MainActivity.this,"我的位置",Toast.LENGTH_SHORT).show();
break;
case R.id.navigation_item_blog:
Toast.makeText(MainActivity.this,"公交查询",Toast.LENGTH_SHORT).show();
break;
case R.id.navigation_item_about:
Toast.makeText(MainActivity.this,"每日新闻",Toast.LENGTH_SHORT).show();
break;
}
return true;
}
});
总结
以上就是关于NavigationView的一些常规使用方法了,如何对NavigationView进行一些高级的扩展呢,也就靠大家自己去发挥自己的想象,后面如果我有自己比较好的一些创意,也会及时分享给大家,总的来说这个NavigationView使用起来还是比较容易的,好了,就说这么多吧!!!
- NavigationView的简单使用
- NavigationView的简单使用
- Android开发 NavigationView的简单使用
- NavigationView的使用
- NavigationView 的使用
- NavigationView的基本使用
- NavigationView的使用
- NavigationView的使用
- NavigationView的使用
- NavigationView的使用
- NavigationView的使用
- NavigationView的使用
- NavigationView的使用
- NavigationView的使用
- NavigationView 的使用
- Navigationview的使用
- NavigationView的使用
- 侧滑菜单(二)NavigationView的简单使用
- leetcode412 笔记
- 删数问题
- wdcp常见组件安装方法
- 第十四周--平衡二叉树
- iOS - 关于轮播图的实现实例
- NavigationView的简单使用
- HBASE 结构详解(转载)
- nmap端口扫描
- 关于重载流插入运算符和流提取运算符的问题
- iOS打印功能详解 UIPrintInteractionController
- Android绘图机制(三)——自定义View的实现方式以及半弧圆新控件
- 第十五周项目1(1)--验证哈希表相关算法
- Warning:mysql_num_rows() expects parameter 1 to be resource,boolean given in F:.....\db_func.php onl
- ios内联函数 inline