首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >BottomNavigationView -如何禁用选定的图标突出显示

BottomNavigationView -如何禁用选定的图标突出显示
EN

Stack Overflow用户
提问于 2020-01-31 02:48:24
回答 5查看 5K关注 0票数 2

我有一个底部导航视图,它根据是否选中状态设置图标。

代码语言:javascript
运行
复制
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/icon_tree"
        android:title="Tree"
        android:icon="@drawable/bottomnav_icon_home">
    </item>

</menu>

bottomnav_icon_home:

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/icon_home_black" android:state_checked="false"/>
    <item android:drawable="@drawable/icon_home_green" android:state_checked="true"/>

</selector>

当android:state_checked为真时,底部导航将自动突出显示图标。

如何完全禁用底部导航的图标选择高亮显示?

我尝试过将app:itemIconTint="@drawable/bottom_navigation_selector"设置为@null,但是这不起作用

代码语言:javascript
运行
复制
<com.google.android.material.bottomnavigation.BottomNavigationView
            android:id="@+id/bottom_navigation"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:menu="@menu/bottom_navigation_menu"
            android:background="@color/colorWhite"
            app:itemTextColor="@drawable/bottom_navigation_selector"
            app:itemIconSize="28dp"
            app:itemIconTint="@drawable/bottom_navigation_selector"
            app:labelVisibilityMode="labeled"/>

bottom_navigation_selector:

代码语言:javascript
运行
复制
<?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/forestGreen" />
    <item android:color="@color/colorBlack" />
</selector>
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2020-02-06 05:36:24

如果我对你的理解是对的,android默认会在你选择的底部导航图标上设置一个色调,你会希望它被正确地删除。

不过,我知道如何在java类(而不是xml )中这样做。

您需要将setItemIconTintList方法的BottomNavigationView设置为null。因此,在设置布局的地方,将代码编写为:

代码语言:javascript
运行
复制
BottomNavigationView btmNav = findViewById(R.id.bottom_navigation);
btmNav.setItemIconTintList(null);

如果这对你有用,请告诉我们。

票数 7
EN

Stack Overflow用户

发布于 2020-02-05 21:30:50

尝试在dimens.xml中添加这一行

代码语言:javascript
运行
复制
<dimen name="design_bottom_navigation_active_text_size" tools:override="true">@dimen/design_bottom_navigation_text_size</dimen>
票数 1
EN

Stack Overflow用户

发布于 2021-04-23 19:19:54

您可以创建自定义样式。

有两个步骤。

1-在可绘图文件夹中创建自定义bottom_navigation_bar_icon_color.xml。这是显示突出显示或默认图标的选择器。因此,您可以高亮显示所有的图标或显示为默认。在创建bottom_navigation_bar_icon_color.xml时,请选择以下内容之一

突出显示的<item android:alpha="1.0" android:color="?attr/colorOnPrimary" android:state_checked="true"/>

  • Icons

  • 图标:默认:<item android:alpha="0.6" android:color="?attr/colorOnPrimary"/>

bottom_navigation_bar_icon_color.xml

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:alpha="0.6" android:color="?attr/colorOnPrimary"/>
</selector>

2-向themes.xml或styles.xml添加以下自定义样式。bottom_navigation_bar_icon_color在itemIconTint和itemTextColor中的应用

代码语言:javascript
运行
复制
<style name="BottomNavigationThemeCustom">
    <item name="enforceTextAppearance">true</item>
    <item name="enforceMaterialTheme">true</item>
    <item name="android:background">?attr/colorPrimary</item>
    <item name="itemIconTint">@drawable/bottom_navigation_bar_icon_color</item>
    <item name="itemRippleColor">@color/mtrl_navigation_bar_colored_ripple_color</item>
    <item name="itemTextAppearanceInactive">?attr/textAppearanceCaption</item>
    <item name="itemTextAppearanceActive">?attr/textAppearanceCaption</item>
    <item name="itemTextColor">@drawable/bottom_navigation_bar_icon_color</item>
</style>

3-使用您的新风格的bottomNavigationBar

代码语言:javascript
运行
复制
<com.google.android.material.bottomnavigation.BottomNavigationView
            android:id="@+id/bottomNavigation"
            style="@style/BottomNavigationThemeCustom"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:visibility="visible"
            app:labelVisibilityMode="unlabeled"
            app:menu="@menu/bottom_menu" />

4-如果要隐藏滚动版上的bottomNavigationBar,请向bottomNavigationBar添加以下属性

代码语言:javascript
运行
复制
app:layout_behavior="com.google.android.material.behavior.HideBottomViewOnScrollBehavior"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59997254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档