Android 以编程方式更改设计支持导航视图标题

Android 以编程方式更改设计支持导航视图标题,android,navigation-drawer,androiddesignsupport,Android,Navigation Drawer,Androiddesignsupport,我有一个关于导航抽屉标题部分项目的问题。 实际上,我想以编程方式更改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

我有一个关于导航抽屉标题部分项目的问题。
实际上,我想以编程方式更改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”

在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" />
    

    我不知道你想做什么。你能清楚地说明前后的情况吗?还有,你尝试过什么?很有效,谢谢…有时候简单的方法就是正确的方法。如果我也想更改图标呢?
    final NavigationView navigationView = (NavigationView) findViewById(R.id.navigation_view);
    
    View headView = navigationView.getHeaderView(0);
    
    ((TextView) headView.findViewById(R.id.nav_title)).setText("New title");