0

嘗試默認BottomNavigationView兩種顏色(對於菜單項的兩種狀態)添加第三個條件和第三個顏色。爲此必須在繪製創建的文件「bottom_nav_colors.xml」與選擇:如何使用ColorStateList更改特定元素BottomNavigationView的顏色?

<?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/colorPrimaryDark"/> 
    <item android:state_activated="true" 
     android:color = "@color/colorAccent"/> 
    <item android:color = "@color/colorGray" /> 
</selector > 

與佈局模板「activity_main.xml中」文件指出:

<android.support.design.widget.BottomNavigationView 
    android:id="@+id/navigation" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="bottom" 
    android:background="?android:attr/windowBackground" 
    app:menu="@menu/navigation_menu" 
    app:itemIconTint="@drawable/bottom_nav_colors" 
    app:itemTextColor="@drawable/bottom_nav_colors"/> 

不過,我想不通從類「MainActivity.java」(繼承自類「MvpAppCompatActivity」)中的類「BottomNavigationView」激活它作爲「激活」(或列表中的任何其他:「加速」,「激活」等)。

或者如果你不能這樣做,那麼怎麼可能?

回答

0

唉,「BottomNavigationView」這個把戲不會奏效。但是如果你使用他的繼承人出來here,這一切都完成的很輕鬆地:

if (ServiceApp.getCartsGoodsNumber() > 0) { 

    bnve.getBottomNavigationItemView(i).setIconTintList(
     ContextCompat.getColorStateList(
      bnve.getContext(), 
      color.bottom_select_nav_colors)); 
    addBadgeAt(bnve, i, ServiceApp.getCartsGoodsNumber()); 

} else { 

    bnve.getBottomNavigationItemView(i).setIconTintList(null); 

    if (mNavigation_20Badge != null) mNavigation_20Badge.hide(true); 
} 

這裏bnve類「BottomNavigationViewExe」的一個實例,並且該方法addBadgeAt()看起來是這樣的:

private void addBadgeAt(BottomNavigationViewEx bnve, 
         final int position, final int number) { 
    // add badge 
    mNavigation_20Badge = new QBadgeView(bnve.getContext()) 
      .setBadgeNumber(number).setGravityOffset(12, 2, true) 
      .bindTarget(bnve.getBottomNavigationItemView(position)); 
} 

此方法可讓您添加徽章圖標:

enter image description here