直接寫解決方法吧:
一、將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(); } }); }