NavigationView获取/查找页眉布局
在我的NavigationView我有一个标题布局ID为'viewId'与活动button。 要设置这些button,我在activity的onPostCreate
执行以下onPostCreate
:
final View panel = findViewById(R.id.viewId); panel.setOnClickListener(new View.OnClickListener() { ... setup goes here ... });
有了新版本的android支持库,( 23.1.0 ),查看无法find,它返回null。 与以前的版本,它运作良好。 这是一个错误还是我使用这个function错了? 如果是这样,如何访问页眉布局并添加行为?
版本23.1.0切换NavigationView
使用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。
现在使用devise支持库的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);
对于我来说那是23.1.0的情况,更新之后空指针exception变成了。 在这种情况下,NavigatorView看起来像:
<android.support.design.widget.NavigationView android:id="@+id/navigation_view" android:layout_height="match_parent" android:layout_width="wrap_content" android:layout_gravity="start" android:fitsSystemWindows="true" app:headerLayout="@layout/nav_header" app:menu="@menu/menu_nav" />
我尝试了ianhanniballake的解决scheme,但它不起作用。 然后我用这个句子夸大了:
LayoutInflater.from(getContext()).inflate(R.layout.nav_header, mNavigationView);
之后,我可以通过idfind在nav_heard中定义的所有视图。
这就是我使用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);
- 如何使用新的Android Multidex支持库启用多重索引
- onClick事件不会触发| Android的
- 多个dex文件定义Landroid / support / v4 / accessibilityservice / AccessibilityServiceInfoCompat
- 使用“adb devices”命令找不到android设备
- 如何在android studio中添加button点击事件
- 在Android网页上禁用缩放input焦点
- 通过Gradle和Android Studio构build和运行应用程序比通过Eclipse慢
- ScrollView布局不填满整个屏幕
- Android M权限:onRequestPermissionsResult()没有被调用