当前位置: 首页 > 知识库问答 >
问题:

BottomNavigationView中的选定项与背景颜色相同

罗允晨
2023-03-14

我正在实现一个底部导航菜单。但菜单中的第一项未被选中。我注意到,当我更改栏背景的颜色时,它会显示出来,原因是第一项“启用”的颜色与导航栏的背景颜色相同。如何更改“已启用”选项卡以及其余项目的颜色。默认情况下它们是黑色的。。。假设我想把它们改成白色。感谢主要活动的图片。http://pctechtips.org/apps/activity.png菜单xml文件

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/navigation_home"
        android:icon="@drawable/ic_home_black_24dp"
        android:title="@string/title_home" />

    <item
        android:id="@+id/navigation_dashboard"
        android:icon="@drawable/ic_dashboard_black_24dp"
        android:title="@string/title_dashboard" />

    <item
        android:id="@+id/navigation_notifications"
        android:icon="@drawable/ic_notifications_black_24dp"
        android:title="@string/title_notifications" />
</menu>

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <org.techgeorge.textrecon.PaintView
        android:id="@+id/paintView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/bottom_navigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:layout_alignParentBottom="true"
        android:background="@color/colorPrimary"
        app:menu="@menu/bottom_nav_menu" />

</RelativeLayout>

共有2个答案

孟增
2023-03-14

您需要为底部导航视图制作可绘制的选择器,以下是示例(nav_item_color_state.xml)

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/white" android:state_checked="true" />
    <item android:color="@color/darker_gray" android:state_checked="false" />
</selector>

然后将下面的代码添加到底部导航视图中

应用程序:itemIconTint="@drawable/nav_item_color_state" 应用程序:itemTextColor="@drawable/nav_item_color_state"

屠锦
2023-03-14

选中/未选中图标和标签的颜色由带有选择器的app:itemIconTintapp:itemTextColor属性定义。BottomNavigationView的默认样式使用此选择器为图标和图标标签着色:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:alpha="1.0" android:color="?attr/colorPrimary" android:state_checked="true"/>
  <item android:alpha="0.6" android:color="?attr/colorOnSurface"/>
</selector>

检查由于某种原因,colorOnSurfacecolorPrimary的颜色是否与BottomNavigationView的背景颜色相同。

您可以在任何情况下重写这些颜色,而无需定义新的选择器。
只需使用android: subject属性:

  <com.google.android.material.bottomnavigation.BottomNavigationView
      android:theme="@style/ThemeOverlay.BottomNavView"
      ../>

与:

  <style name="ThemeOverlay.BottomNavView" parent="">
    <item name="colorPrimary">@color/secondaryDarkColor</item>
    <item name="colorOnSurface">@color/colorAccent</item>
  </style>

还可以将自定义样式与materialThemeOverlay属性一起使用:

  <style name="MyWidget.MaterialComponents.BottomNavigationView" parent="Widget.MaterialComponents.BottomNavigationView">
    <item name="materialThemeOverlay">@style/ThemeOverlay.BottomNavView</item>
  </style>

与:

  <com.google.android.material.bottomnavigation.BottomNavigationView
      style="@style/MyWidget.MaterialComponents.BottomNavigationView"
      ../>

最后一个属性需要库的1.1.0版本。

 类似资料:
  • 在超文本标记语言中,我什么时候使用颜色,背景颜色和背景标签有什么区别? 有什么区别?

  • 我有一个选择框,当选择框被单击并显示所有选项时,我正在尝试更改选项的背景颜色。

  • 我指的是这个。单击“计划”时会显示“计划”活动,但始终选择第一个项目颜色(收藏夹)。它不会从收藏夹项目颜色更改明细表项目颜色。还有第三项(音乐)。我使用android:state\u checked而不是android:state\u enabled。“如果使用startActivity,则不会更改“收藏夹”项目颜色中的日程项目颜色。如果不更改,则会更改颜色。如何解决此颜色选择问题。 activi

  • background(int $color, int $pattern = self::PATTERN_SOLID): self int $color $format = new \Vtiful\Kernel\Format($fileHandle); ​ $backgroundStyle = $format->background( \Vtiful\Kernel\Format::COLO

  • 问题内容: 我试图更改选项菜单的默认颜色为白色:我希望选项菜单上的每个项目都为黑色背景。 我已经尝试过在菜单元素中的item元素上进行类似android:itemBackground =“#000000”的拍摄,但是没有用。 我该怎么做? 问题答案: 在花费了大量时间尝试所有选项之后,我能够使用更改溢出菜单背景的应用程序的唯一方法是使用属性: ``` 从API 4.2到5.0进行了测试。

  • 我正在制作一个基于文本的游戏,用户输入文本来解决游戏。我决定使用JavaSwing来显示文本,我希望文本窗格的背景为黑色。我已经尝试了所有我发现的东西(注释掉了),但是没有一个看起来有效。 这里没有显示导入的图片,但是当我使用任何被注释掉的部分运行游戏时,游戏中没有错误。