добавить onClickListener в заголовке навигации, используя дизайн библиотеки поддержки Android
Я хочу добавить onClickListener к элементам заголовка навигационного вида, таким как изменение текста TextView или установка изображения для ImageView.
3 ответа:
В вашем activity_main.XML-макет добавить код навигационного ящика.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" android:orientation="vertical"> <include layout="@layout/toolbar"/> <android.support.v4.widget.DrawerLayout android:id="@+id/drawerLayout" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <FrameLayout android:id="@+id/containerView" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"></FrameLayout> <android.support.design.widget.NavigationView android:id="@+id/navigationView" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" android:layout_marginTop="-24dp" app:headerLayout="@layout/drawer_header" app:itemTextColor="@color/black" app:menu="@menu/nav_menu"/> </android.support.v4.widget.DrawerLayout>
И суммируйте ваш drawer_header.xml в каталоге компоновки
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:clickable="true" android:paddingTop="20dp" android:id="@+id/textView5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="My header" android:textAppearance="?android:attr/textAppearanceLarge"/>
Добавить nav_menu.xml в каталог меню
<?xml version="1.0" encoding="utf-8"?>
<group android:id="@+id/main_features" android:checkableBehavior="single"> <item android:id="@+id/idHome" android:title="Home" /> <item android:id="@+id/favorite" android:title="Favorites" /> <item android:id="@+id/idSettings" android:title="Settings" /> </group>
В вашей основной деятельности.java слушайте щелчки
DrawerLayout mDrawerLayout; NavigationView mNavigationView; TextView header;
Затем инициализируйте их в onCreate ():
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout); mNavigationView = (NavigationView) findViewById(R.id.navigationView); header = (TextView) findViewById(R.id.textView5); header.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getBaseContext(),"Calling Header", Toast.LENGTH_LONG).show(); } });
Обновление: 27/10/2015
С обновлением библиотеки поддержки добавление заголовка к вид навигации в xml не работает, возможно, это ошибка.
Чтобы добавить представление заголовка надуйте смотреть в качестве заголовка навигации на Java.
Надеюсь, это поможет. Счастливого Кодирования...mNavigationView.inflateHeaderView(R.layout.layout_header_profile);