Android NavigationView头部设置监听事件

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();
      }
    });

  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android BottomNavigationView底部导航效果

    BottomNavigationView 很早之前就在 Material Design 中出现了,但是直到 Android Support Library 25 中才增加了 BottomNavigationView 控件.也就是说如果使用官方的BottomNavigationView控件必须让targetSdkVersion >= 25,这样才能引入25版本以上的兼容包. 接下来我们来看看如何使用BottomNavigationView. 使用BottomNavigationView 需要添加d

  • Android中NavigationView的使用与相关问题解决

    一.基本使用 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 andr

  • Android NavigationView头部设置监听事件

    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_gravit

  • Android编程实现音量按钮添加监听事件的方法

    本文实例讲述了Android编程实现音量按钮添加监听事件的方法.分享给大家供大家参考,具体如下: 很多Android应用都应用到音量按钮,比如翻页,调整音乐声音大小等,但是如果没有对音量按钮进行监听,则无法达到预期的效果.如下代码,就是监听Android手机的音量按钮,开发者可以在相应的位置添加自己需要实现的功能. @Override public boolean onKeyDown (int keyCode, KeyEvent event) { // 获取手机当前音量值 int i = get

  • Android开发实现Fragment监听返回键事件功能的方法

    本文实例讲述了Android开发实现Fragment监听返回键事件功能的方法.分享给大家供大家参考,具体如下: 前面的文章Android开发教程之Fragment定义.创建与使用方法详细讲述了Fragment的基本概念与用法.这里再来分析一下Fragment监听返回键事件的具体应用. 背景 项目要求用户注册成功后进入修改个人资料的页面,且不允许返回到上一个页面,资料修改完成后结束当前页面,进入APP主页. 由于是使用多个Fragment完成注册流程,就需要Fragment监听用户点击手机上的返回

  • Android开发实现AlertDialog中View的控件设置监听功能分析

    本文实例讲述了Android开发实现AlertDialog中View的控件设置监听功能.分享给大家供大家参考,具体如下: 之前给弹出的AlertDialog中的控件设置监听时,老是报空指针异常,之所以报空指针异常,是因为我findViewById写的有问题,因为我们需要给弹出框中的控件设置监听,直接用findViewById是找不到弹出框中的控件的,需要利用Dialog.findViewById或者利用你找到的弹出框中的View,然后view.findViewById;具体看下面代码 packa

  • android输入框内容改变的监听事件实例

    android输入框内容改变的监听事件一般用于比如我们常见的:登录qq时 用户名输入完整时头像自动显示,或者注册用户时实时提示注册格式是否正确等.那么我们在这里举例:判断输入框是否有内容,来改变按钮的状态,常用于搜索一类.截图如下:(布局代码不再给出) 首先所在的activity要 implements TextWatcher并实现其方法: public void afterTextChanged(Editable arg0) { // 文字改变后出发事件 String content = ed

  • 安卓(Android)动态创建多个按钮并添加监听事件

    1.获取屏幕大小,以合理设定 按钮 大小及位置 DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); int width = dm.widthPixels; int height = dm.heightPixels; 2.自定义layout组件 RelativeLayout layout = new RelativeLayout(this); 3.这里创建1

  • Android开发手册Chip监听及ChipGroup监听

    目录 Chip监听 ChipGroup监听 实例 效果展示 Chip监听 选中状态的监听:setOnCheckedChangeListener,该监听只有设置了checkable 属性为true或者使用了[filter/entry/choice]这三个style主题的时候才生效. 点击事件的监听:setOnClickListener 关闭按钮被点击的监听:setOnCloseIconClickListener Java myChip.setOnCloseIconClickListener(Vie

  • Android编程实现实时监听EditText文本输入的方法

    本文实例讲述了Android编程实现实时监听EditText文本输入的方法.分享给大家供大家参考,具体如下: 平时在做Android开发过程中经常要用到EditText,有时候可能需要监听你在TextView中输入的字数的状态和变化,以便于我们能做相应的提示和操作.我们可以通过下面的方式来实现. class EditChangedListener implements TextWatcher { private CharSequence temp;//监听前的文本 private int edi

  • Android广播接实现监听电话状态(电话的状态,拦截)

    首先我们来理解下监听器的机制. Android的事件处理机制有两种:监听和回调. A基于监听的事件处理 主要涉及三类对象:EventSource(事件源),Event(事件),EventListener(事件监听器) 监听机制处理事件的流程图如下(委派式:Delegation): 1:需要在AndroidManifest.xml清单中添加权限 <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS&q

  • Android网络状态实时监听实例代码(二)

    上篇文章给大家介绍了Android 网络状态实时监听代码实例(一),感兴趣的朋友可以点击了解详情,本文接着给大家介绍android网络状态监听相关知识,具体内容如下所示: 在开发android应用时,涉及到要进行网络访问,时常需要进行网络状态的检查,以提供给用户必要的提醒.一般可以通过ConnectivityManager来完成该工作. ConnectivityManager有四个主要任务: 1.监听手机网络状态(包括GPRS,WIFI, UMTS等) 2.手机状态发生改变时,发送广播 3.当一

随机推荐