NavigationView
来源:互联网 发布:淘宝到了1个钻 编辑:程序博客网 时间:2024/06/05 15:55
简介
NavigationView是Google在Android5.0后推出。相比之前抽屉菜单实现方式,NavigationView极大方便了安卓侧边栏实现。
构造
NavigationView分两部分,上面部分称为HeaderLayout,下面部分为menu(菜单)。
使用
添加依赖
在AndroidManifest.xml中加入:
compile 'com.android.support:design:26.0.0-alpha1'
布局代码
<?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" android:id="@+id/drawerLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" tools:context="com.example.administrator.design.view.NavigationViewActivity"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:text="内容区域" /> </RelativeLayout> <!-- navigationView:headerLayout="@layout/headerLayout"添加头布局 navigationView:menu="@menu/my_menu"以菜单的形式 添加点击按钮 --> <android.support.design.widget.NavigationView xmlns:navigationView="http://schemas.android.com/apk/res-auto" android:id="@+id/navigationView" android:layout_width="300dp" android:layout_height="match_parent" android:layout_gravity="left" navigationView:headerLayout="@layout/header_layout" navigationView:menu="@menu/my_menu"> </android.support.design.widget.NavigationView></android.support.v4.widget.DrawerLayout>
引用资源
- HeaderLayout
<?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="200dp"> <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/slide_header" /> <TextView android:id="@+id/tv_header" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="印度有200万安卓" /></RelativeLayout>
- menu
<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/setting_menu" android:icon="@mipmap/ic_launcher" android:title="设置"></item> <item android:id="@+id/about_menu" android:icon="@mipmap/ic_launcher" android:title="关于我们"></item> <item android:id="@+id/clear_menu" android:icon="@mipmap/ic_launcher" android:title="清除缓存"></item></menu>
逻辑代码
package com.example.administrator.design.view;import android.app.Activity;import android.os.Bundle;import android.support.design.widget.NavigationView;import android.support.v4.widget.DrawerLayout;import android.view.Gravity;import android.view.MenuItem;import android.view.View;import android.widget.TextView;import android.widget.Toast;import com.example.administrator.design.R;public class NavigationViewActivity extends Activity { /*声明控件*/ private NavigationView mNavigationView; private DrawerLayout mDrawerLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_navigation_view); initView(); } private void initView() { mNavigationView = findViewById(R.id.navigationView); mDrawerLayout = findViewById(R.id.drawerLayout); // 获得头布局 View view = mNavigationView.getHeaderView(0); TextView tvHeader = view.findViewById(R.id.tv_header); tvHeader.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(NavigationViewActivity.this, "抢饭碗的", Toast.LENGTH_SHORT).show(); } }); mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.setting_menu: Toast.makeText(NavigationViewActivity.this, "设置内容", Toast.LENGTH_SHORT).show(); mDrawerLayout.closeDrawer(Gravity.LEFT); break; case R.id.about_menu: Toast.makeText(NavigationViewActivity.this, "关于我们", Toast.LENGTH_SHORT).show(); mDrawerLayout.closeDrawer(Gravity.LEFT); break; case R.id.clear_menu: Toast.makeText(NavigationViewActivity.this, "清除缓存", Toast.LENGTH_SHORT).show(); mDrawerLayout.closeDrawer(Gravity.LEFT); break; default: break; } return false; } }); }}
释义
全屏显示
android:fitsSystemWindows="true"
抽屉从左边滑出
android:layout_gravity="left"
所引头布局文件(抽屉上面部分布局)
navigationView:headerLayout="@layout/header_layout"
所引menu文件(抽屉下面部分点击项)
navigationView:menu="@menu/my_menu"
设置点击项中图标颜色(同种颜色)
app:itemIconTint="@color/blue"
设置点击项中图标为非同种颜色)
navigationView.setItemIconTintList(null);
添加分隔线
为menu添加group标签,并为group设置id,使group包含点击项,可随意分组隐藏某点击项(true显示 false隐藏)
MenuItem menuItem = navigationView.getMenu().findItem(R.id.clearCache);
menuItem.setVisible(false);
阅读全文
0 0
- NavigationView
- NavigationView
- NavigationView
- NavigationView
- NavigationView
- NavigationView
- NavigationView
- NavigationView
- NavigationView
- NavigationView+Toolbar
- NavigationView自定义
- NavigationView+DrawerLayout
- NavigationView使用
- 2.NavigationView
- NavigationView使用
- NavigationView 简介
- DrawerLayout && NavigationView
- 使用NavigationView
- DB2、Oracle命令行导入/导出数据
- Tomcat源码解析(9)
- 报错com.neenbedankt.android-apt not found如何解决
- 简单自定义选择按钮(switchDemo)
- 整数中1出现的次数
- NavigationView
- 升级安装APK兼容Android7.0,解决FileUriExposedException
- 矩陣置换
- 下载安装apk(最终)
- 关于Java中try finally return语句的执行顺序分析
- 【多媒体编解码】Android 视频解析MediaExtractor
- Eclipse+maven配置SSM(Spring+SpringMVC+mybatis)
- HDU 6124 Euler theorem(思维)
- 罕见的pdf转html技巧,有需要的领走