BottomNavigationBar-更改标签图标颜色

Posted

技术标签:

【中文标题】BottomNavigationBar-更改标签图标颜色【英文标题】:BottomNavigationBar-change the tab icon color 【发布时间】:2017-07-09 20:53:13 【问题描述】:

我在我的应用中集成了底部栏导航栏。但是当我滑动时,标签的颜色不会改变。这很奇怪,因为我有选择器文件。有什么想法可以解决这个问题吗?

Activity.java

BottomNavigationView bottomNavigationView = (BottomNavigationView)
            findViewById(R.id.bottom_navigation);


    bottomNavigationView.setOnNavigationItemSelectedListener(
            new BottomNavigationView.OnNavigationItemSelectedListener() 
                @Override
                public boolean onNavigationItemSelected(@NonNull MenuItem item) 
                    switch (item.getItemId()) 
                        case R.id.bb_menu_arac:
                            fragment = new AraclarimFragment();
                            break;
                        case R.id.bb_menu_yaklasan:
                            fragment = new YaklasanlarFragment();
                            break;
                        case R.id.bb_menu_yakin:
                            fragment = new Yakinimdakiler();
                            break;

                    
                    final FragmentTransaction transaction = fragmentManager.beginTransaction();
                    transaction.replace(R.id.main_container, fragment).commit();
                    return true;
                


            );

selector.xml

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

activiy.xml

<android.support.design.widget.BottomNavigationView
    android:id="@+id/bottom_navigation"
    android:layout_
    android:layout_
    android:layout_gravity="bottom|end"
    app:itemBackground="@color/colorPrimary"
    app:itemIconTint="@color/beyaz"
    app:itemTextColor="@color/beyaz"
    app:menu="@menu/bottombar_menu" />

【问题讨论】:

你在哪里使用了 selector.xml? 你写的代码是 androida:state_enabled 而不是 android:state_enabled ??这是制造问题吗? @AnuragSingh 实际上,我不知道应该在哪里使用或调用 selector.xml @YunusHaznedar 您想更改所选项目的文本颜色或所选项目的背景吗? 【参考方案1】:

更改为app:itemIconTint="@drawable/selector"

还将您的 selector.xml 更改为:

<?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/beyaz" />
<item android:color="@color/colorPrimaryDark"  />
</selector>

【讨论】:

android:color 更改为android:drawable 是我的重点【参考方案2】:

尽管阅读了所有答案,但我对整个过程感到困惑,所以这是我逐步解决的方法,以便初学者可以正确理解它

假设您使用底部导航创建了MainActivity

在您的 drawable 文件夹中创建 bottom_navigation_selector.xml

<?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/yourSelectedColor" />
  <item android:color="@color/defaultColor"  />
</selector>

然后转到activity_main.xml布局并在BottomNavigationView中添加这一行

app:itemIconTint="@drawable/bottom_navigation_selector"

如果您还想相应地更改文本颜色,那么您还需要添加这一行

app:itemTextColor="@drawable/bottom_navigation_selector"
    

【讨论】:

【参考方案3】:

您必须将选择器设置为您的 BottomNavigationView 的 itemIconTint。类似的东西

 <android.support.design.widget.BottomNavigationView
    android:id="@+id/bottom_navigation"
    android:layout_
    android:layout_
    android:layout_gravity="bottom|end"
    app:itemBackground="@color/colorPrimary"
    app:itemIconTint="@drawable/selector"
    app:itemTextColor="@color/beyaz"
    app:menu="@menu/bottombar_menu" />

【讨论】:

以上是关于BottomNavigationBar-更改标签图标颜色的主要内容,如果未能解决你的问题,请参考以下文章

BottomNavigationBar 页面更改导致 StreamBuilder 数据重新加载

在BottomNavigationBar上更改选项卡时禁用重建页面

Flutter -------- BottomNavigationBar 界面切换

Flutter BottomNavigationBar 和高级导航

更改堆积图上的标签

如何保持我的bottomNavigationBar Cubit BLoc Flutter的状态?