NavigationView头部设置监听事件
直接写解决方法吧:
1、将XML里的静态引入删除:
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="start" />
<!--删除下面两行-->
<!--app:headerLayout="@layout/nav_header"-->
<!--app:menu="@menu/nav_menu"-->
2、在代码里 findViewById 找到 NavigationView,然后引入 Header 和 Menu,再获取头部布局,最后设置监听事件:
//findviewbyid
navigationView = (NavigationView) findViewById(R.id.nav_view);
//引入header和menu
navigationView.inflateHeaderView(R.layout.nav_header);
navigationView.inflateMenu(R.menu.nav_menu);
//获取头部布局
View navHeaderView = navigationView.getHeaderView(0);
3、完整代码如下:
private void initNavigation() {
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
navigationView = (NavigationView) findViewById(R.id.nav_view);
//引入header和menu
navigationView.inflateHeaderView(R.layout.nav_header);
navigationView.inflateMenu(R.menu.nav_menu);
//设置menu的监听事件
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.add_city:
//启动
startActivityForResult(new Intent(MainActivity.this, CityPickerActivity.class),
REQUEST_CODE_PICK_CITY);
drawerLayout.closeDrawers();
break;
case R.id.setting:
Intent SettingIntent = new Intent(MainActivity.this, SettingActivity.class);
startActivity(SettingIntent);
drawerLayout.closeDrawers();
break;
case R.id.about:
Intent aboutIntent = new Intent(MainActivity.this, aboutActivity.class);
startActivity(aboutIntent);
drawerLayout.closeDrawers();
break;
}
return false;
}
});
//获取头部布局
View navHeaderView = navigationView.getHeaderView(0);
//设置监听事件
icon_image = (CircleImageView) navHeaderView.findViewById(R.id.icon_image);
icon_image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog.show();
}
});
//读取头像
Utility.getImageFromShare(this, icon_image);
//dialog
dialog = new CustomDialog(this, 100, 100, R.layout.dialog_photo, R.style.Theme_dialog,
Gravity.BOTTOM, R.style.pop_anim_style);
//屏幕外点击无效
dialog.setCancelable(false);
btn_camera = (Button) dialog.findViewById(R.id.btn_camera);
btn_camera.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
toCamera();
}
});
btn_picture = (Button) dialog.findViewById(R.id.btn_picture);
btn_picture.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
toPicture();
}
});
btn_cancel = (Button) dialog.findViewById(R.id.btn_cancel);
btn_cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog.dismiss();
}
});
}
NavigationView头部设置监听事件的更多相关文章
- UI设计篇·入门篇·简单动画的实现,透明动画/旋转动画/移动动画/缩放动画,混合动画效果的实现,为动画设置监听事件,自定义动画的方法
基本的动画构成共有四种:透明动画/旋转动画/移动动画/缩放动画. 配置动画的方式有两种,一种是直接使用代码来配置动画效果,另一种是使用xml文档配置动画效果 相比而言,用xml文档写出来的动画效果,写 ...
- 为不具有change事件的html标签设置监听事件
change事件会在文本内容或选项被更改时触发. 该事件仅适用于<input type="text">和<textarea>以及<select> ...
- 一步一步学android之事件篇——单选按钮监听事件
在平常使用软件的时候,我们经常会碰见一些选择题,例如选择性别的时候,在男和女之间选,前面说过这个情况要用RadioGroup组件,那么点击了之后我们该怎么获取到选择的那个值呢,这就是今天要说的OnCh ...
- EditText中onEditorAction监听事件执行两次
Android的EditText通过setOnEditorActionListener给文本编辑框设置监听事件,但是在其处理方法onEditorAction中的逻辑在每次回车后都触发了两次, 原来是在 ...
- Android 给按钮添加监听事件
在安卓开发中,如果要给一个按钮添加监听事件的话,有以下三种实现方式 1.方式一 public class MainActivity extends ActionBarActivity { @Overr ...
- Android CheckBox的监听事件
1.在xml文件中定义CheckBox,一定要定义id <CheckBox android:id="@+id/beijing" android:layout_width=&q ...
- android listview 的监听事件
今天遇到了一个比较让我头疼的问题,不过追根揭底只是我对listview理解的不够透彻罢了, 闲言少叙,说说我遇到的问题吧: 上篇随笔我写了关于listview的使用,如果你也已经写好了列表那么恭喜这一 ...
- jquery实现拖拽以及jquery监听事件的写法
很久之前写了一个jquery3D楼盘在线选择,这么一个插件,插件很简单,因为后期项目中没有实际用到,因此,有些地方不是很完善,后面也懒得再进行修改维护了.最近放到github上面,但是也少有人问津及s ...
- python hook监听事件
python hook监听事件 作者:vpoet mail:vpoet_sir@163.com # -*- coding: utf-8 -*- # # by oldj http://oldj.net/ ...
随机推荐
- 排序算法入门之堆排序(Java实现)
堆排序 在学习了二叉堆(优先队列)以后,我们来看看堆排序.堆排序总的运行时间为O(NlonN). 堆的概念 堆是以数组作为存储结构. 可以看出,它们满足以下规律: 设当前元素在数组中以R[i]表示,那 ...
- windows安装weblogic和域的建立
Copyright ©2014 Manchester United
- [C#网络应用编程]1、对进程的操作
在.net中,Process类提供了对进程进行管理的各种方法. 一.获取进程集合的方法: Process[] myProcesses = Process.GetProcesses(); //获取本地 ...
- Day4_名称空间与作用域
函数嵌套: 函数的嵌套调用:在调用一个函数的过程中,又调用了了另外一个函数 比如说比较多个值的大小,可以利用这种方法: def max2(x,y): if x > y: return x els ...
- Django-CKedtior图片找不到的问题
从Django Packages站点上找到这个CKeditor集成组件:https://github.com/shaunsephton/django-ckeditor 按照官方的install方法安装 ...
- POSTGRESQL 并发控制
http://meidayhxp.blog.163.com/blog/static/117608156201210243837491/ 这个内容是官方Doc中的一章,具体是那一版的,还未确认. 第九章 ...
- python3学习笔记4---引用http://python3-cookbook.readthedocs.io/zh_CN/latest/
2018-03-01数据结构与算法(4) 1.16过滤序列元素 最简单的过滤序列元素的方法就是使用列表推导.比如: >>> mylist = [1, 4, -5, 10, -7, 2 ...
- Centos 7安装python3
纯傻瓜式步骤,保证成功. 下面的操作,按照步骤来就可以了,不要在中途cd 到别的文件目录下,要想查看效果可以用 lsj加上对应的目录,不需要切换进去. 首先不管你当前在哪个目录下,输入以下命令. [r ...
- Scala编程入门---数组操作之数组转换
使用yield和函数式编程转换数组 //对Array进行转换,获取的还是Aarry val a = Array(1,2,3,4,5) val a2 = for(ele <- a) yield e ...
- ZeroMQ 教程 002 : 高级技巧
本文主要译自 zguide - chapter two. 但并不是照本翻译. 上一章我们简单的介绍了一个ZMQ, 并给出了三个套路的例子: 请求-回应, 订阅-发布, 流水线(分治). 这一章, 我们 ...