[英]BottomNavigationView original icon color for checked and not checked different
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>
我知道這是一個老問題,但是他們希望保留誰的圖標顏色,因為使用此方法並將其設置為null setItemIconTintList(ColorStateList tint)–設置應用於菜單圖標的顏色。
這是嘗試的最簡單方法,讓我知道
bNavigationView = (BottomNavigationView)
findViewById(R.id.bottom_navigation);
bNavigationView.setItemIconTintList(null);
這是最優雅的超快速方式。
注意:將setItemIconTintList設置為null會刪除圖標的整個色調顏色,但是如果您需要特定圖標的這種效果,則可以在onNavigationItemSelected中執行此操作
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;
}
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.