NavigationView获取Header View的问题

NavigationView是Google推出的MD风格支持库里的主要控件之一,一般与DrawerLayout结合使用提供侧滑菜单。
NavigationView的header布局中常用来放置用户头像、用户名等信息,所以我们必须获取到header布局中的view。
最近在使用NavigationView的时候遇到无法通过findviewbyid方法获取header布局的问题(返回值是null),经过一番周折终于解决,在这里将解决过程记录下来。

 

其实,NavigationView是一个RecyclerView(在23.1.0版本之前是ListView),header布局通常是0号元素。在Support Library v23.1.1版本中,可以使用如下方法很方便地获取到header中的view:

View headerLayout = navigationView.getHeaderView(0); // 0-index header

而在23.1.0版本中,就需要通过这种方法:

View headerLayout =
navigationView.inflateHeaderView(R.layout.navigation_header);
panel = headerLayout.findViewById(R.id.viewId);
// panel won't be null


参考资料:

http://stackoverflow.com/questions/33194594/navigationview-get-find-header-layout

http://blog.csdn.net/lmj623565791/article/details/46405409

你可能感兴趣的:(Android)