一、基本使用
1. NavigationVIEw 在 design 库中,添加依赖(最新的是 23.2.0);
compile 'com.androID.support:design:23.1.1'
2. 然后在 DrawerLayout 布局中添加 NavigationVIEw ;
<?xml version="1.0" enCoding="utf-8"?><androID.support.v4.Widget.DrawerLayout androID:ID="@+ID/drawer_layout" xmlns:androID="http://schemas.androID.com/apk/res/androID" xmlns:app="http://schemas.androID.com/apk/res-auto" androID:layout_wIDth="match_parent" androID:layout_height="match_parent"> <FrameLayout androID:layout_wIDth="match_parent" androID:layout_height="match_parent"> <linearLayout androID:ID="@+ID/main" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:orIEntation="vertical"> <androID.support.v7.Widget.Toolbar androID:ID="@+ID/toolbar" androID:layout_wIDth="match_parent" androID:layout_height="?attr/actionbarSize" androID:background="@color/colorPrimary" app:popuptheme="@style/themeOverlay.AppCompat.light" app:theme="@style/themeOverlay.AppCompat.Dark.Actionbar"/> ...... </linearLayout> </FrameLayout> <androID.support.design.Widget.NavigationVIEw androID:ID="@+ID/navigation" androID:layout_wIDth="wrap_content" androID:layout_height="match_parent" androID:layout_gravity="start" app:headerLayout="@layout/nav_header" app:menu="@menu/activity_main_drawer"/></androID.support.v4.Widget.DrawerLayout>
其中需要注意给 NavigationVIEw 设置 androID:layout_gravity="start"
属性。
3.然后注意到 NavigationVIEw 其实是分两个部分的,一个是头部,一个是下面的菜单列表部分
如下图所示:
其中头部通过 app:headerLayout="@layout/nav_header"
属性添加,nav_header 的布局如下:
<?xml version="1.0" enCoding="utf-8"?><FrameLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:layout_wIDth="match_parent" androID:layout_height="192dp" androID:theme="@style/themeOverlay.AppCompat.Dark"> <ImageVIEw androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:background="@drawable/nav_header_bg" androID:scaleType="centerCrop"/> <ImageVIEw androID:layout_wIDth="96dp" androID:layout_height="96dp" androID:layout_gravity="bottom" androID:layout_marginBottom="36dp" androID:padding="8dp" androID:src="@drawable/ic_avatar"/> <TextVIEw androID:layout_wIDth="match_parent" androID:layout_height="wrap_content" androID:layout_gravity="bottom" androID:padding="16dp" androID:text="Jaeger" androID:textAppearance="@style/TextAppearance.AppCompat.Body1"/></FrameLayout>
下面的菜单列表部分是一个 menu 文件,通过 app:menu="@menu/activity_main_drawer"
属性添加。
activity_main_drawer.xml 文件在 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_camera" androID:icon="@drawable/ic_menu_camera" androID:title="import"/> <item androID:ID="@+ID/nav_gallery" androID:icon="@drawable/ic_menu_gallery" androID:title="gallery"/> <item androID:ID="@+ID/nav_slIDeshow" androID:icon="@drawable/ic_menu_slIDeshow" androID:title="SlIDeshow"/> <item androID:ID="@+ID/nav_manage" androID:icon="@drawable/ic_menu_manage" androID:title="Tools"/> </group> <item androID:title="Communicate"> <menu> <item androID:ID="@+ID/nav_share" androID:icon="@drawable/ic_menu_share" androID:title="Share"/> <item androID:ID="@+ID/nav_send" androID:icon="@drawable/ic_menu_send" androID:title="Send"/> </menu> </item></menu>
4. 菜单列表的点击事件
菜单列表的点击事件设置代码如下:
navigationVIEw.setNavigationItemSelectedListener(new NavigationVIEw.OnNavigationItemSelectedListener() { @OverrIDe public boolean onNavigationItemSelected(MenuItem item) { switch (item.getItemID()){ case R.ID.nav_personal_info: // do something break; ... } return false; } });
至此,NavigationVIEw 的基本使用就差不多搞定了,效果就是前面图片显示的效果。
以下是使用过程中遇到的问题及解决方式。
一、菜单图标颜色被渲染成其他颜色
NavigationVIEw默认会按照 AndroID 设计规范,将菜单里的图标渲染成itemIconTint
所设置的颜色。如果你没有设置这个属性,则会渲染成它默认的深灰色。如果不想图标颜色被渲染,可通过以下代码解决:
navigationVIEw.setItemIconTintList(null);
二、菜单图标与文字的间距过大
NavigationVIEw的菜单中,图标与文字的间距为32dp,但是通常与我们的设计师出的效果不同,这时可以通过重写以下属性来进行设置:
<dimen name="design_navigation_icon_padding" tools:overrIDe="true">16dp</dimen>
总结
以上就是这篇文章的全部内容了,希望本文的内容对各位AndroID开发者们能有所帮助,如果有疑问大家可以留言交流。
总结以上是内存溢出为你收集整理的Android中NavigationView的使用与相关问题解决全部内容,希望文章能够帮你解决Android中NavigationView的使用与相关问题解决所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)