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的使用。

我们可以在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使用起来还是比较容易的,好了,就说这么多吧!!!

0 0