Mako Shan

Mako 是一名密码朋克爱好者
这里是我记录生活和成长的地方

联系我的微信号
👏欢迎一起交流学习

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
你从未认识你的城市
目录