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

底部导航视图中选定选项卡的颜色

陆子默
2023-03-14

我正在向项目中添加一个底部导航视图(BottomNavigationView),我希望所选选项卡具有不同的文本(和图标色调)(以实现灰显非所选选项卡的效果)。在颜色选择器资源文件中对android:state\u selected=“true”使用不同的颜色似乎不起作用。我还尝试使用android:state\u-focused=“true”或android:state\u-enabled=“true”添加项目条目,但遗憾的是没有效果。还尝试将默认(未选择)颜色的“state\u selected”(状态选择)属性设置为false(显式),但没有成功。

以下是如何将视图添加到布局中:

<android.support.design.widget.BottomNavigationView
        android:id="@+id/bottom_navigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        app:itemBackground="@color/silver"
        app:itemIconTint="@color/bnv_tab_item_foreground"
        app:itemTextColor="@color/bnv_tab_item_foreground"
        app:menu="@menu/bottom_nav_bar_menu" />

这是我的颜色选择器(bnv\u tab\u item\u foreground.xml):

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

和我的菜单资源(bottom\u nav\u bar\u menu.xml):

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/action_home"
        android:icon="@drawable/ic_local_taxi_black_24dp"
        android:title="@string/home" />
    <item
        android:id="@+id/action_rides"
        android:icon="@drawable/ic_local_airport_black_24dp"
        android:title="@string/rides"/>
    <item
        android:id="@+id/action_cafes"
        android:icon="@drawable/ic_local_cafe_black_24dp"
        android:title="@string/cafes"/>
    <item
        android:id="@+id/action_hotels"
        android:icon="@drawable/ic_local_hotel_black_24dp"
        android:title="@string/hotels"/>

</menu>

如果有任何帮助,我将不胜感激。


共有3个答案

裴威
2023-03-14

BottomNavigationView使用应用于所选选项卡的主题中的colorPrimary,并使用android:textColorSecondary作为非活动选项卡图标的色调。

因此,您可以使用首选的主颜色创建样式,并将其设置为xml布局文件中的底部导航视图的主题。

样式。xml:

 <style name="BottomNavigationTheme" parent="Theme.AppCompat.Light">
        <item name="colorPrimary">@color/active_tab_color</item>
        <item name="android:textColorSecondary">@color/inactive_tab_color</item>
 </style>

您的\u布局。xml:

<android.support.design.widget.BottomNavigationView
            android:id="@+id/navigation"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="?android:attr/windowBackground"
            android:theme="@style/BottomNavigationTheme"
            app:menu="@menu/navigation" />

彭华皓
2023-03-14

1、在res内创建名为color的文件夹(如drawable)

2、右键单击颜色文件夹。选择新建-

3、复制粘贴bnv\u tab\u item\u前台

<android.support.design.widget.BottomNavigationView
            android:id="@+id/navigation"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginEnd="0dp"
            android:layout_marginStart="0dp"
            app:itemBackground="@color/appcolor"//diffrent color
            app:itemIconTint="@color/bnv_tab_item_foreground" //inside folder 2 diff colors
            app:itemTextColor="@color/bnv_tab_item_foreground"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:menu="@menu/navigation" />

bnv_tab_item_foreground:

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

图1:文件结构:

慕宏儒
2023-03-14

在创建选择器时,始终在末尾保持默认状态,否则只会使用默认状态。您需要将选择器中的项目重新排序为:

<?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>

与底部导航栏一起使用的状态是选中的状态,而不是选中的状态。

 类似资料:
  • 我在我的应用程序中添加了。 主要的xml bottom\u navigation\u main。xml 主活动单击 我想更改所选位置底部导航的图标。当用户单击一个项目时,我们如何实现此功能? (如果用户单击了一个项目,则图标将更改为另一个项目)

  • 在我的应用程序中,我有5个片段。我使用底部导航来管理它们。但在第一个片段中,我有回收器视图,当我单击回收器项目时,我需要在此选项卡(第一个选项卡)中打开第二个片段。 现在,当我试图打开第二个片段时,他打开了所有标签上方。 这就是我如何打开第二个碎片

  • 我实现了一个bottomNavigationView,其中每个选项都有其条目片段,有些选项在同一个选项下有更多的导航。 某种程度上是这样的: A- B类- C类- D- E类- 其中A, B, C, D 所需的导航是,应用程序的入口和出口点始终是选项A(入口片段A1)。因此,如果用户导航到另一个选项,只要该选项位于该选项的条目片段中,任何反向导航的行为都应该转到选项A。 我遇到的问题是,botto

  • 我有两个屏幕链接到两个标签按钮 < li >名称 < li >持续时间 单击“下一步”按钮时,我希望选项卡移动到第二个按钮。在我的视图模型中,这是我对“下一步”按钮的命令 这是我的代码示例 第二个视图将全屏打开,而不是移动到下一个选项卡。 屏幕已连接 第一屏 第二屏幕 我看到的屏幕

  • 我想在我的Android项目中创建一个底部导航栏。这里有导航栏中的5个项目(只有项目图标。没有任何项目的名称)。我想以这样的方式制作它,当一个项目被选中时,它会随着显示其名称而被放大一点。我该如何做到这一点? 另外,我尝试了一个图像视图,里面有图像按钮。一个未放大的图标图像按钮和相应的放大图标(它的名字)图像按钮重叠在一起,选择一个可见,另一个不可见,但这是个坏主意。代码可以工作,但布局非常糟糕和

  • 我的应用程序有问题。我有一个底部导航视图,包含3个不同的片段,尽管目前只有主要的内容。当我试图从左侧的两个片段中的一个移动到主视图时,问题就出现了,即当底部导航视图被隐藏时。我附上了主代码。 PD:我有25.3.1版本的所有库(如果有用的话)。 感谢您的关注。 activity\u main。xml 主要活动。Java语言 我也给你添加了两张图片。 Ofertas片段 主片段