Изменить дизайн Поддержка Навигация Заголовок заголовка Программно
У меня вопрос о разделах разделов заголовка навигационного ящика.
На самом деле я хочу программно изменить TextView в HeaderLayout, вот коды:
drawer menu: <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="all">
<item
android:id="@+id/navItem1"
android:icon="@drawable/ic_home_drawer"
android:title="A"/>
<item
android:id="@+id/navItem2"
android:icon="@drawable/ic_gallery_drawer"
android:title="B"/>
<item
android:id="@+id/navItem3"
android:icon="@drawable/ic_exhibition"
android:title="C"/>
<item
android:id="@+id/navItem4"
android:icon="@drawable/ic_news_drawer"
android:title="D"/>
<item
android:id="@+id/navItem5"
android:icon="@drawable/ic_exit_drawer"
android:title="E"/>
</group>
здесь находится XML-заголовок навигации:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="256dp"
android:theme="@style/ThemeOverlay.AppCompat.Dark"
>
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:src="@drawable/nav_header" />
<ImageView
android:layout_width="match_parent"
android:layout_height="3dp"
android:layout_gravity="bottom"
android:scaleType="centerCrop"
android:src="@drawable/nav_header_bar" />
<TextView
android:id="@+id/nav_title"
android:layout_width="match_parent"
android:layout_gravity="top"
android:gravity="center"
android:text="IAMTEXT"
android:layout_height="wrap_content" />
Я хочу изменить это программно: android:text="IAMTEXT"
Ответы
Ответ 1
В коде Java:
- Используйте
findViewById(R.id.nav_title)
, чтобы найти TextView
- используйте
setText()
, чтобы установить текст в TextView
Например, в вашем MainActivity:
TextView navTitle = (TextView) findViewById(R.id.nav_title);
navTitle.setText("This is a changed string.");
Ответ 2
Я предполагаю, что вы используете NavigationView
<android.support.design.widget.NavigationView
android:id="@+id/navigation_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:headerLayout="@layout/drawer_header"
app:menu="@menu/drawer_menu" />
ок. вы можете получить представление заголовка из вида навигации
final NavigationView navigationView = (NavigationView) findViewById(R.id.navigation_view);
View headView = navigationView.getHeaderView(0);
((TextView) headView.findViewById(R.id.nav_title)).setText("New title");