BottomNavigationView原始图标颜色用于检查,未检查不同



bottomNavigationView原始图标颜色我在这里发现可以保留相同的图标颜色。但是,只有在选择图标并保留非选择选项卡的不同灰色颜色时才能保留它?这是我更改图标颜色的代码。

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:color="@color/colorSecondary"
    android:state_checked="true"/>
<item
    android:color="#bebebe"
    android:state_checked="false"/>

在state_checked中,我尝试给予@null,但这只是使图标粉红色。检查时,我想保留图标颜色。是否可以?

注意:我还尝试使用bnavigationView.seticontintlist(null);将所有图标颜色更改为原始颜色。

public class MainActivity extends AppCompatActivity {
 Toolbar toolbar;
 BottomNavigationView bNavigationView;
 BottomNavigationView.OnNavigationItemSelectedListener 
 mOnNavigationItemSelectedListener
        = new BottomNavigationView.OnNavigationItemSelectedListener() {
    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        switch (item.getItemId()) {
            case R.id.navigation_account:
// AS gives me an error here saying setItemIconTintList cannot be applied to (int,null)
                bNavigationView.setItemIconTintList(0,null);
                fragmentTransaction.replace(R.id.content,new AccountFragment()).commit();
                break;
            case R.id.navigation_technical:
                fragmentTransaction.replace(R.id.content,new TechnicalEventsFragment()).commit();
                break;
            case R.id.navigation_corporate:
                fragmentTransaction.replace(R.id.content,new CorporateEventsFragment()).commit();
                break;
            case R.id.navigation_cultural:
                fragmentTransaction.replace(R.id.content,new CulturalEventsFragment()).commit();
                break;
            case R.id.navigation_dashboard:
                fragmentTransaction.replace(R.id.content,new DashboardFragment()).commit();
                break;
        }
        return true;
    }
};

尝试此

 <?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/colorSecondary"/>
        <item android:color="#bebebe"  />
    </selector>

我知道这是旧问题setItemicOntIntlist(ColorStatelist Tint) - 设置应用于菜单图标的色调。

这是最简单的方法,让我知道

    bNavigationView = (BottomNavigationView) 

 findViewById(R.id.bottom_navigation);
 bNavigationView.setItemIconTintList(null);

这是做到这一点的最优雅的超快速方法。

注意:将setItementIntlist设置为null将删除图标的整个色彩颜色,但是如果您需要特定图标的效果您可以在nnavigationemselected

内完成此操作
  bNavigationView.setOnNavigationItemSelectedListener(new 
    BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {

                switch (item.getItemId()) {
                    case R.id.iconOne:
               bNavigationView.setIconTintList(0,null);
       replaceFragment(FirstFragment.newInstance(),"FragmentOne");                            
                    break;
                    case R.id.mySpecificIcon:
                //setIconTintList taking to params the first
                //is the position of the icon wich is array starts from     
                //0    
                bNavigationView.setIconTintList(1,null);
              replaceFragment(FirstFragment.newInstance(),"Fragment2");

                        // mainViewPager.setCurrentItem(3);
                        break;

                }
                return true;
            }
        })

最新更新