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