如何以编程方式更改NavigationView标题背景?

时间:2016-05-22 09:04:31

标签: android android-navigationview

我想以编程方式更改NavigationView标题背景,但得到的东西不是我想要的。

这是MainActivity我试图以这种方式改变导航标题背景:

    View header = navigationView.getHeaderView(0);
            tv_nav_header = (TextView)header.findViewById(R.id.text_nav_header);
            tv_nav_header.setText(username);
            tv_nav_header.setBackground(drawable);

这是我的nav_header.xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="160dp">
        <cn.xyz.util.CircleImageView
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:layout_marginTop="40dp"
            android:layout_marginStart="10dp"
            android:src="@mipmap/ic_launcher" />

        <TextView
            android:id="@+id/text_nav_header"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="55dp"
            android:layout_marginStart="70dp"
            android:text="tempLocalUser"
            android:textColor="#FFFFFF"
            android:background="@android:color/transparent"/>
    </RelativeLayout>

activity_main.xml中

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/drawer_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true">
                <FrameLayout
                    android:id="@+id/content"
                    android:layout_width="match_parent"
                    android:layout_height="0dp"
                    android:layout_weight="100" />
        <android.support.design.widget.NavigationView
            android:id="@+id/navigation"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            app:headerLayout="@layout/nav_header"
            app:menu="@menu/nav_drawer" />
    </android.support.v4.widget.DrawerLayout>
像这样的实际节目,这不是我想要的 enter image description here

以下是我想要的,这是由nav_header.xml RelativeLayout attr

实现的

机器人:背景=&#34; @颜色/ colorPrimary_blue&#34;

enter image description here

1 个答案:

答案 0 :(得分:0)

您正在为TextView设置背景颜色。而是尝试在RelativeLayout上设置颜色。请尝试以下方法 -

View header = navigationView.getHeaderView(0);
header.setBackground(drawable);
tv_nav_header = (TextView)header.findViewById(R.id.text_nav_header);
tv_nav_header.setText(username);
tv_nav_header.setBackground(drawable);