NavigationView頭部設置監聽事件

直接寫解決方法吧:
一、將XML裏的靜態引入刪除:android

<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"-->

二、在代碼裏 findViewById 找到 NavigationView,而後引入 Header 和 Menu,再獲取頭部佈局,最後設置監聽事件:app

//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);

三、完整代碼以下:ide

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

    }
相關文章
相關標籤/搜索