在我的NavigationView中,我有一个带有id 'viewId‘和活动按钮的页眉布局。要设置这些按钮,我在activity的onPostCreate
中执行以下操作
final View panel = findViewById(R.id.viewId);
panel.setOnClickListener(new View.OnClickListener() {
... setup goes here ...
});
使用新版本的安卓支持库(23.1.0),无法找到视图,它返回null。在以前的版本中,它工作得很好。这是一个bug,还是我用错了这个功能?如果是这样,如何访问页眉布局并向其添加行为?
发布于 2015-10-18 13:57:21
版本23.1.0将NavigationView
切换为使用RecyclerView
(而不是以前的ListView
),并将报头添加为这些元素之一。这意味着它不能立即调用findViewById()
-在它附加到NavigationView
之前需要一个布局过程。
对于支持库的version 23.1.1,您现在可以使用getHeaderView()
获取对头视图的引用
View headerLayout = navigationView.getHeaderView(0); // 0-index header
这样做的好处是可以处理通过XML和代码添加的头部。
如果你仍然使用23.1.0,根据the related bug,你可以在代码中膨胀头部,并在上面使用findViewById()
:
View headerLayout =
navigationView.inflateHeaderView(R.layout.navigation_header);
panel = headerLayout.findViewById(R.id.viewId);
// panel won't be null
直到您迁移到23.1.1。
发布于 2015-11-14 02:49:25
现在,使用设计支持库的23.1.1发行版,您可以使用
NavigationView navigationView = (NavigationView) findViewById(R.id.your_nav_view_id);
View header = navigationView.getHeaderView(0)
TextView text = (TextView) header.findViewById(R.id.textView);
发布于 2016-09-01 21:10:22
这就是我使用ButterKnife
实现的方法,它对我来说很有效。
protected static class HeaderViewHolder {
@BindView(R.id.button)
Button button;
HeaderViewHolder(View view) {
ButterKnife.bind(this, view);
}
}
然后像这样使用这个视图控制器:
View header = navigationView.getHeaderView(0);
headerViewHolder = new HeaderViewHolder(header);
https://stackoverflow.com/questions/33194594
复制相似问题