以编程方式更改设计支持导航视图 Header 标题
Change Design Support Navigation View Header Title Programmatically
我对导航抽屉 Header 部分项目有疑问。
实际上我想以编程方式更改 HeaderLayout 中的 TextView,代码如下:
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>
这里是导航HeaderXML:
<?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"
在您的 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.");
我假设您使用的是 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" />
好的。您可以从导航视图
中获取 header 视图
final NavigationView navigationView = (NavigationView) findViewById(R.id.navigation_view);
View headView = navigationView.getHeaderView(0);
((TextView) headView.findViewById(R.id.nav_title)).setText("New title");
我对导航抽屉 Header 部分项目有疑问。
实际上我想以编程方式更改 HeaderLayout 中的 TextView,代码如下:
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>
这里是导航HeaderXML:
<?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"
在您的 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.");
我假设您使用的是 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" />
好的。您可以从导航视图
中获取 header 视图final NavigationView navigationView = (NavigationView) findViewById(R.id.navigation_view);
View headView = navigationView.getHeaderView(0);
((TextView) headView.findViewById(R.id.nav_title)).setText("New title");