Android实现NavigationView使用教程
来源:互联网 发布:软件标题修改器 编辑:程序博客网 时间:2024/06/05 19:12
一、概述
Google I/O 2015 给大家带来了Android Design Support Library,对于希望做md风格的app的来说,简直是天大的喜讯了~大家可以通过Android Design Support Library该文章对其进行了解,也可以直接在github上下载示例代码运行学习。为了表达我心中的喜悦,我决定针对该库写一系列的文章来分别介绍新增加的控件。
ok,那么首先介绍的就是NavigationView。
注意下更新下as的SDK,然后在使用的过程中,在build.gradle中添加:
<span style="font-size:18px;color:#FF6666;"><strong>compile 'com.android.support:design:22.2.0'</strong></span>
在MD(支持5.0状态栏沉浸等特征)风格的app中,例如如下风格的侧滑菜单非常常见:
一、使用
(一)布局文件 activity_main.xml
<?xml version="1.0" encoding="utf-8"?><android.support.v4.widget.DrawerLayout android:id="@+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" android:fitsSystemWindows="true" > <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.Toolbar android:id="@+id/id_toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:layout_scrollFlags="scroll|enterAlways" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> <TextView android:id="@+id/id_tv_content" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="HelloWorld" android:textSize="30sp"/> </RelativeLayout> <android.support.design.widget.NavigationView android:id="@+id/id_nv_menu" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="left" android:fitsSystemWindows="true" app:headerLayout="@layout/header_just_username" app:menu="@menu/menu_zlb" /></android.support.v4.widget.DrawerLayout>
可以看到我们的最外层是DrawerLayout
,里面一个content,一个作为drawer。我们的drawer为NavigationView
。
注意这个view的两个属性app:headerLayout="@layout/header_just_username"
和app:menu="@menu/menu_drawer"
,分别代表drawer布局中的header和menuitem区域,当然你可以根据自己的情况使用。
接下来看看header的布局文件和menu配置文件:
header.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="192dp" android:background="?attr/colorPrimary" android:orientation="vertical" android:padding="16dp" > <TextView android:id="@+id/id_link" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_marginBottom="16dp" android:text="http://blog.csdn.net/zlb_lover"/> <TextView android:id="@+id/id_username" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@id/id_link" android:text="Bad boy"/> <ImageView android:layout_width="72dp" android:layout_height="72dp" android:layout_above="@id/id_username" android:layout_marginBottom="16dp" android:src="@mipmap/default_portrait"/></RelativeLayout>menu.xml
<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android"> <group > <item android:id="@+id/nav_home" android:checkable="true" android:icon="@mipmap/icon_feedback" android:title="信息反馈"/> <item android:checkable="true" android:id="@+id/nav_messages" android:icon="@mipmap/icon_setting" android:title="设置"/> <item android:checkable="true" android:id="@+id/nav_friends" android:icon="@mipmap/icon_update" android:title="系统更新"/> <item android:checkable="true" android:id="@+id/nav_discussion" android:icon="@mipmap/icon_user_center" android:title="用户中心"/> </group> <item android:title="Sub items"> <menu> <item android:checkable="true" android:icon="@mipmap/icon_about" android:title="关于我们"/> <item android:checkable="true" android:icon="@mipmap/icon_about" android:title="关于版本"/> </menu> </item></menu>别忘了设置theme~<code class="language-xml hljs has-numbering"><span style="color:#FF6666;"><span class="hljs-tag"><<span class="hljs-title">style</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"Theme.DesignDemo"</span> <span class="hljs-attribute">parent</span>=<span class="hljs-value">"Base.Theme.DesignDemo"</span>></span><span class="css"> </span><span class="hljs-tag"></<span class="hljs-title">style</span>></span> <span class="hljs-tag"><<span class="hljs-title">style</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"Base.Theme.DesignDemo"</span> <span class="hljs-attribute">parent</span>=<span class="hljs-value">"Theme.AppCompat.Light.NoActionBar"</span>></span><span class="css"> <<span class="hljs-tag">item</span> <span class="hljs-tag">name</span>="<span class="hljs-tag">colorPrimary</span>"><span class="hljs-id">#673AB7</span></<span class="hljs-tag">item</span>> <<span class="hljs-tag">item</span> <span class="hljs-tag">name</span>="<span class="hljs-tag">colorPrimaryDark</span>"><span class="hljs-id">#512DA8</span></<span class="hljs-tag">item</span>> <<span class="hljs-tag">item</span> <span class="hljs-tag">name</span>="<span class="hljs-tag">colorAccent</span>"><span class="hljs-id">#FF4081</span></<span class="hljs-tag">item</span>><span class="hljs-at_rule"><span class="hljs-keyword"></span> </span></span><span class="hljs-tag"></<span class="hljs-title">style</span>></span></span></code><pre name="code" class="prettyprint"><code class="language-xml hljs has-numbering"><span class="hljs-tag"><<span class="hljs-title">activity</span><span class="hljs-attribute"></span><span class="hljs-value"></span> <span style="color:#FF0000;"> <span class="hljs-attribute">android:theme</span>=<span class="hljs-value">"@style/Theme.DesignDemo"</span>></span></span><span class="hljs-tag"></<span class="hljs-title">activity</span>></span></code>
最后MainActivity.class
public class MainActivity extends AppCompatActivity { private DrawerLayout mDrawerLayout; private NavigationView mNavigationView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mDrawerLayout = (DrawerLayout) findViewById(R.id.id_drawer_layout); mNavigationView = (NavigationView) findViewById(R.id.id_nv_menu); /** *不写下面代码,navigationView中菜单的图片默认是灰色的, *如果我想让图片就是显示他本身的颜色该怎么办呢?在Java代码中调用如下方法: */ mNavigationView.setItemIconTintList(null); Toolbar toolbar = (Toolbar) findViewById(R.id.id_toolbar); setSupportActionBar(toolbar);//设置toolbar getSupportActionBar().setHomeAsUpIndicator(R.mipmap.icon_back);//更改toolbar的返回按钮图片 getSupportActionBar().setDisplayHomeAsUpEnabled(true); setupDrawerContent(mNavigationView); } private void setupDrawerContent(NavigationView navigationView) { navigationView.setNavigationItemSelectedListener( new NavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(MenuItem menuItem) { menuItem.setChecked(true); mDrawerLayout.closeDrawers();//关闭抽屉 return true; } }); } //添加menu @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_zlb,menu); return true; } //菜单项单击事件 @Override public boolean onOptionsItemSelected(MenuItem item) { if(item.getItemId() == android.R.id.home) { mDrawerLayout.openDrawer(GravityCompat.START); return true ; } return super.onOptionsItemSelected(item); }}
0 0
- Android实现NavigationView使用教程
- Android 自己实现 NavigationView
- 【android】NavigationView控件的使用
- Android 中NavigationView的使用
- NavigationView侧滑菜单 使用教程
- Android DrawerLayout+Toolbar+NavigationView(实现侧拉侧滑效果)
- Android-NavigationView+DrawerLayout实现抽屉菜单
- 【Android - MD】之NavigationView的使用
- Android开发 NavigationView的简单使用
- Android:Material Design之NavigationView使用
- NavigationView使用
- NavigationView使用
- 使用NavigationView
- Android 自己实现 NavigationView [Design Support Library(1)]
- Android 自己实现 NavigationView [Design Support Library(1)]
- Android学习笔记:NavigationView实现侧拉抽屉
- Android 自己实现 NavigationView [Design Support Library(1)]
- Android 自己实现 NavigationView [Design Support Library(1)]
- openCV 图像绕中心旋转
- iOS 10 的适配问题总结
- 将资源文件的图片转换成bitmap 的两种方法
- Android主题和样式之系统篇(上级)
- C#面向对象_封装_160922
- Android实现NavigationView使用教程
- H264码合成TS专用API
- 定位功能
- laravel-发送邮件
- xml转换DataTable
- NSRunLoop_mode_timer
- 打印N个数组整体最大的Top K
- java测试代码运行时间
- [LeetCode] 9.Palindrome Number