相关文章推荐
气宇轩昂的椅子  ·  [Solved] create and ...·  1 年前    · 
有爱心的书签  ·  C# ...·  1 年前    · 

自定义BottomNavigationView,以显示所选项目的文本,以及非所选项目的图标。

1 人关注

我试图使这个 NavigationBottomView :

我所想要的是使选定的项目成为文本而不是图标。

我在谷歌上搜索了一下,并试图制作自定义的 navigationBottomView 项目,但我发现没有像我想要的东西。

2 个评论
Zain
我想这是一个图标,而不是一个文本
@Zain 是否有可能成为一个文本?或者甚至我可以隐藏图标,只支付项目标题?
android
android-layout
material-design
bottomnavigationview
android-bottomnavigationview
Seif E. Attia
Seif E. Attia
发布于 2022-01-02
1 个回答
Zain
Zain
发布于 2022-01-05
已采纳
0 人赞同

是否有可能成为一个文本? 或者甚至我可以隐藏图标,只显示项目标题?

Yes it's.

要控制切换 BottomNavigationView 的项目文本,请使用 app:itemTextColor 与一个自定义选择器

  • In your case you need to show up the text when an item is checked, and hide it otherwise.
  • 要控制项目图标的切换,请使用 app:itemIconTint 和一个自定义选择器

  • In your case you need to show up the icon when an item is unchecked, and hide it otherwise.
  • 对于文本/图标这两种情况,你可以使用透明色作为隐藏状态的黑客。

    <com.google.android.material.bottomnavigation.BottomNavigationView
        app:itemTextColor="@drawable/text_selector"
        app:itemIconTint="@drawable/icon_selector"
    

    text_selector.xml:

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

    icon_selector.xml:

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

    我以前试过,但我得到的结果是图标被隐藏,文字仍在底部 画面底部,而不是像你发送的GIF那样移到中间。

    你可以通过改变BottomNavView的文字大小来获得相同的行为。

    创建以下样式来增加项目文本。

    <style name="BottomNavigationViewActiveItemText" parent="@style/TextAppearance.AppCompat.Caption">
        <item name="android:textSize">20sp</item>
    </style>
    

    Apply it to the BottomNavigationView with app:itemTextAppearanceActive="@style/BottomNavigationViewActiveItemText"

    如果你的项目文本可以分两行,也可以使用。

    <style name="BottomNavigationStyle">