【问题标题】:using different Background Color of Bottom NavigationBar Tab使用底部导航栏选项卡的不同背景颜色
【发布时间】:2019-02-16 02:17:27
【问题描述】:

我正在向项目中添加一个 BottomNavigationView,并且我希望为每个底部选项卡设置不同的背景颜色。在颜色选择器资源文件中使用 android:state_selected="true" 的不同颜色似乎不起作用。我还尝试输入更多内容,如 android:state_focused="true" 或 android:state_enabled="true",不幸的是没有效果。

(底部导航视图)

 <android.support.design.widget.BottomNavigationView
        android:id="@+id/bottomNavigationView"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        app:itemIconTint="@color/menu_txt_color"
        app:itemTextColor="@color/menu_txt_color"
        android:background="@drawable/bnv_tab_item_foreground"
        app:layout_constraintBottom_toTopOf="@+id/guideline14"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="1.0"
        app:layout_constraintStart_toStartOf="parent"
        app:menu="@menu/navigation" />

(颜色选择器)

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/add_child" android:state_checked="true" android:state_pressed="true"/>
    <item android:drawable="@color/light_blue" android:state_checked="false"/>

</selector>

(我的菜单资源)

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">


    <item
        android:id="@+id/tab1"
        android:layout_height="wrap_content"
        android:icon="@drawable/baby3"
        android:checked="true"
        android:title="hello"
        app:showAsAction="always|withText" />

    <item
        android:id="@+id/tab2"
        android:icon="@drawable/baby2"
        android:title="heelo2"
        app:showAsAction="always|withText|collapseActionView" />


    <item
        android:id="@+id/tab3"
        android:checkable="false"
        android:icon="@drawable/baby2"
        android:title="hello 3"
        app:showAsAction="always|withText" />

    <item
        android:id="@+id/tab4"
        android:checkable="false"
        android:icon="@drawable/baby3"
        android:title="heelo 4"
        app:showAsAction="always|withText" />

</menu>

当我选择标签时突出显示,我想要像 Instagram 这样的底部导航栏标签,我也尝试过 (How to create bottom navigation bar similar to instagram) 但它没有帮助..

有人遇到过这种情况吗?

谢谢

【问题讨论】:

    标签: java android bottomnavigationview


    【解决方案1】:

    试试这个方法

    使用自定义操作布局作为菜单

    <item
        android:id="@+id/nav_1"
        android:title=""
        app:actionLayout="@layout/custom_layout"/>
    
    <item
        android:id="@+id/nav_2"
        android:title=""
        app:actionLayout="@layout/custom_layout"/>
    
    <item
        android:id="@+id/nav_3"
        android:title=""
        app:actionLayout="@layout/custom_layout"/>
    
    <item
        android:id="@+id/nav_4"
        android:title=""
        app:actionLayout="@layout/custom_layout"/>
    
    <item
        android:id="@+id/nav_5"
        android:title=""
        app:actionLayout="@layout/custom_layout"/>
    

    custom_layoutlayout 文件夹中会是这样的

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
        <Button
            android:id="@+id/button"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_gravity="center_vertical"
            android:background="@drawable/selector"
            android:layout_weight="1"
            android:gravity="center_vertical"/>
    
    </LinearLayout>
    

    在您使用BottomNavigationView 的活动中,您可以这样做

    try{
        View view = navigationView.getMenu().findItem(R.id.nav_1).getActionView();
                Button button = (Button) view.findViewById(R.id.button);
                 //button.setOnClickListener(this);
                 // similarly for others menu in BottomNavigationView
            } catch (Exception e) {
                AppLogger.getInstance().writeException(e);
            }
    

    更新

    selector.xml

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_selected="true" android:color="@color/Primary" />
        <item android:state_focused="false" android:color="@color/IconsColor" />
        <item android:state_selected="false" android:color="@color/IconsColor" />
        <item android:state_focused="true" android:color="@color/Primary" />
        <item android:state_pressed="true" android:color="@color/white" />
        <item android:color="@color/tabsScrollColor" />
    </selector>
    

    【讨论】:

    • 感谢@Aniruddh Parihar 的回答,但问题仍未解决我尝试更改按钮背景颜色,但没有任何反应,全部显示为空白...
    • 您是否尝试过在 BottomNavigationView 中不使用 app:itemIconTint="@color/menu_txt_color" ?
    • 如果你不介意的话,我需要更多帮助......我希望我的标签图标保持不变,就像 instagram 底部标签一样......你知道它是如何工作的吗? ..??
    • google.com/…: 这种类型的导航栏......图标仍然保持不变只是背景变化......图标没有移动
    • 你在选择器中试过这个吗? schemas.android.com/apk/res/android">
    猜你喜欢
    • 1970-01-01
    • 2022-10-04
    • 2019-11-12
    • 2018-01-14
    • 2021-12-25
    • 2020-08-12
    • 1970-01-01
    • 1970-01-01
    • 2015-05-14
    相关资源
    最近更新 更多