导航视图 header 点击侦听器不工作
Navigation View header click listener not working
出于某种原因,我的导航视图的 header 不适合我。我已经按照其他帖子的答案进行操作,但我仍然遇到同样的问题。这是我的代码:
navigationView = (NavigationView) findViewById(R.id.nav_view);
View header = navigationView.getHeaderView(0);
linearLayoutUserProfile = (LinearLayout) header.findViewById(R.id.linearUserProfile);
linearLayoutUserProfile.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Toast.makeText(MenuActivity.this,"Click header", Toast.LENGTH_SHORT).show();
//Intent mIntent = new Intent(MenuActivity.this, ProfileActivity.class);
//startActivity(mIntent);
}
});
谁能给我一些提示?
找一个
解决方案,请阅读下文
经过反复搜索,我发现您不必在导航视图后添加更多 xml 代码:
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_menu"
app:menu="@menu/activity_menu_drawer"/>
最好将此导航视图选项卡留在 "activity_main.xml" 的末尾(或者 xml 导航视图所在的位置)这是我的 "nav_header_menu.xml":
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="@dimen/nav_header_height"
android:id="@+id/linearUserProfile"
android:background="@drawable/background_wheat"
android:gravity="bottom"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:clickable="true"
android:theme="@style/ThemeOverlay.AppCompat.Dark">
<ImageView
android:id="@+id/imageViewHeader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="@dimen/nav_header_vertical_spacing"
android:src="@drawable/ic_user_no_picture_45dp"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/textViewNombre"
android:paddingTop="@dimen/nav_header_vertical_spacing"
android:text="Some name"
android:textAppearance="@style/TextAppearance.AppCompat.Body1"/>
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="text"/>
</LinearLayout>
出于某种原因,我的导航视图的 header 不适合我。我已经按照其他帖子的答案进行操作,但我仍然遇到同样的问题。这是我的代码:
navigationView = (NavigationView) findViewById(R.id.nav_view);
View header = navigationView.getHeaderView(0);
linearLayoutUserProfile = (LinearLayout) header.findViewById(R.id.linearUserProfile);
linearLayoutUserProfile.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Toast.makeText(MenuActivity.this,"Click header", Toast.LENGTH_SHORT).show();
//Intent mIntent = new Intent(MenuActivity.this, ProfileActivity.class);
//startActivity(mIntent);
}
});
谁能给我一些提示?
找一个 解决方案,请阅读下文
经过反复搜索,我发现您不必在导航视图后添加更多 xml 代码:
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_menu"
app:menu="@menu/activity_menu_drawer"/>
最好将此导航视图选项卡留在 "activity_main.xml" 的末尾(或者 xml 导航视图所在的位置)这是我的 "nav_header_menu.xml":
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="@dimen/nav_header_height"
android:id="@+id/linearUserProfile"
android:background="@drawable/background_wheat"
android:gravity="bottom"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:clickable="true"
android:theme="@style/ThemeOverlay.AppCompat.Dark">
<ImageView
android:id="@+id/imageViewHeader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="@dimen/nav_header_vertical_spacing"
android:src="@drawable/ic_user_no_picture_45dp"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/textViewNombre"
android:paddingTop="@dimen/nav_header_vertical_spacing"
android:text="Some name"
android:textAppearance="@style/TextAppearance.AppCompat.Body1"/>
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="text"/>
</LinearLayout>