NavigationView addHeader问题
今天兴高彩烈的把 Material Design 支持库 (com.android.support:design
)更新到最新版本23.1.1
,结果悲剧发生了, findViewById()
获取HeaderLayout
中的控件报错,支持库中的NavigationView
添加Header方便的在xml直接添加app:headerLayout="@layout/header_layout"
就好,但是在新版23.1.0开始NavigationView 内部实现使用RecyclerView
代替 ListView
,这意味着RecyclerView 跟ListView添加header机制不同,当页面初始化的时候 RecyclerView 并没有设置 header,这时候findViewById() 就会出错。
解决办法:
View header = navigationView.inflateHeaderView(R.layout.main_drawer_header);
userName= (TextView) header.findViewById(R.id.main_drawer_layout_user);
注意在xml去掉这一句,避免重复加载
app:headerLayout="@layout/main_drawer_header"
12