我正在尝试从nav_header.xml
类MainActivity
中分配dailyImage。
MainActivity类有setContentView(R.layout.activity_main);
我可以在nav_action.xml中分配视图,但不能在nav_header.xml中分配 我似乎无法想象为什么findViewById()在尝试从MainActivity类访问nav_header.xml中的DailyImage时返回null。
保持这种状态,有没有办法分配
nav_header.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="180dp"
android:background="@android:color/holo_blue_dark"
android:padding="10dp"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"
tools:context="com.example.hello.world.MainActivity">
<ImageView
android:id="@+id/DailyImage"
android:layout_width="match_parent"
android:layout_height="108dp"
android:layout_below="@+id/menu_text"
android:layout_alignParentStart="true" />
</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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/nav_drawer_main"
android:background="@color/gray"
android:orientation="vertical"
android:fitsSystemWindows="true"
tools:openDrawer="start">
<include
layout="@layout/nav_action"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<android.support.design.widget.NavigationView
android:layout_width="260dp"
android:layout_height="match_parent"
android:id="@+id/nav_men"
android:background="@color/black"
app:menu="@menu/nav_menu"
android:layout_gravity="start"
app:headerLayout="@layout/nav_header"
app:itemIconTint="@drawable/drawer_item"
app:itemTextColor="@drawable/drawer_item">
</android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>
答案 0 :(得分:0)
标头不是Activity根布局的一部分,因此它无法遍历所有嵌套视图以查找它,因此它为null。
您必须浏览NavigationView。
NavigationView get/find header layout
Is there any way to control views inside NavigationView header?
// Shouldn't be null
NavigationView navView = (NavigationView) findViewById(R.id.nav_men);
View headerView = navView.getHeaderView(0);
// This is the ImageView
ImageView iv = (ImageView) headerView.findViewById(R.id.DailyImage);