android - 为底部导航栏设置选中和未选中状态不起作用 [Android]
问题描述
我正在创建一个应用程序,在该应用程序中创建了一个底部导航栏。现在我想要的是为导航栏项目的选定/未选定状态设置单独的颜色。所以我创建了一个 xml 文件并将其设置为导航栏的项目色调和文本颜色,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:color="@android:color/holo_blue_dark" />
<item android:color="@android:color/darker_gray" />
</selector>
并在主菜单中添加导航栏:
<android.support.design.widget.BottomNavigationView
android:id="@+id/mainNav"
android:layout_width="match_parent"
android:layout_height="56dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:background="@android:color/white"
android:elevation="8dp"
app:itemIconTint="@color/nav_bar_item_state"
app:itemTextColor="@color/nav_bar_item_state"
app:menu="@menu/nav_items"></android.support.design.widget.BottomNavigationView>
我从这个链接得到了这个解决方案:
但是当我运行该应用程序时,它会因错误“无法充气导航栏”而崩溃。我究竟做错了什么?任何帮助,将不胜感激。
更新: 我通过在可绘制文件中创建选择器文件尝试了同样的事情,但不幸的是它也不起作用。
解决方案
试试这个:-
设置item.setCheckable(true)
在里面onNavigationItemSelected()
public boolean onNavigationItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.navigation_home:
item.setCheckable(true);
mTextMessage.setText(R.string.title_home);
return true;
}
return false;
}
推荐阅读
- azure-devops - Azure Pipelines/VSTS:删除外部工件预删除项目保留策略的构建
- r - 在 R 中,如何过滤数据框以仅包含 >=2 非 NA 值的行?
- spring-boot - Spring Batch Multiple JobExecutionListener - 不工作
- javascript - 如何在不使用 document.write() 的情况下在 Javascript 中开始新行?
- sql - 使用“with”函数和中位数有困难
- python - 索引ndarray时应该如何使用arange函数?
- azure - Azure APIM 控制在开发人员门户中显示哪些 API
- ocaml - OCaml-图像 (.png) 到颜色数组
- twitter-bootstrap-3 - 如何使用较新版本的 Less 运行 Bootstrap 3.0.2?
- unit-testing - 在 Nestjs 的单元测试中模拟服务