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,再獲取頭部布局,最后設置監聽事件:
//findviewbyidnavigationView = (NavigationView) findViewById(R.id.nav_view);//引入header和menunavigationView.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();      }    });  }以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。
新聞熱點
疑難解答