小编典典

NavigationView 获取/查找标题布局

all

在我的 NavigationView 中,我有一个带有活动按钮的 id ‘viewId’
的标题布局。要设置这些按钮,我在活动中执行以下操作onPostCreate

final View panel = findViewById(R.id.viewId);
panel.setOnClickListener(new View.OnClickListener() {
... setup goes here ...
});

使用新版本的 android 支持库 ( 23.1.0 ),无法找到视图,它返回
null。使用以前的版本,它运行良好。是错误还是我使用此功能错误?如果是这样,如何访问标题布局并向其添加行为?


阅读 83

收藏
2022-08-08

共1个答案

小编典典

版本 23.1.0 切换NavigationView到使用 a
RecyclerView(而不是以前的ListView),并且标头被添加为这些元素之一。这意味着它不能立即调用findViewById()-
在将其附加到NavigationView.

对于支持库的23.1.1
,您现在可以使用以下方式获取对标题视图的引用getHeaderView()

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

这具有处理通过 XML 和代码添加的标头的优势。

如果您仍在使用
23.1.0,根据相关的错误,您可以在代码中扩充标题并使用findViewById()它:

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

直到您移至 23.1.1。

2022-08-08