如何在NavigationView for Material Design Drawer上添加项目的通知值?

lop*_*ael 21 android navigation-drawer material-design navigationview

我的问题很简单,如何添加项目的通知值向右NavigationView材料设计抽屉这样呢?

在此输入图像描述

菜单项中是否有用于定义抽屉的属性?

<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <group
        android:checkableBehavior="single">

        <item
            android:id="@+id/drawer_home"
            android:checked="true"
            android:icon="@drawable/ic_home_black_24dp"
            android:title="@string/home"/>

        <item
            android:id="@+id/drawer_favourite"
            android:icon="@drawable/ic_favorite_black_24dp"
            android:title="@string/favourite"/>
        ...

        <item
            android:id="@+id/drawer_settings"
            android:icon="@drawable/ic_settings_black_24dp"
            android:title="@string/settings"/>

    </group>
</menu>
Run Code Online (Sandbox Code Playgroud)

Eva*_* II 13

NavigationView使用操作视图从AppCompat-V7的第23版开始就可以实现这一点.1.为柜台创建布局,例如nav_drawer_counter.xml:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:gravity="center_vertical"
    android:textColor="@color/colorPrimary"/>
Run Code Online (Sandbox Code Playgroud)
  1. 从您希望在其中显示计数器值的每个项目添加对它的引用menu/nav_drawer.xml(确保使用app命名空间):

    <item 
        ...
        app:actionLayout="@layout/activity_main_nav_drawer_menu_counter"
        />
    
    Run Code Online (Sandbox Code Playgroud)
  2. 添加一个方法来设置TextView例如:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    ....
    setNavItemCount(R.id.nav_notifications, 10);
    }
    
    
    private void setNavItemCount(@IdRes int itemId, int count) {
    TextView view = (TextView) navigationView.getMenu().findItem(itemId).getActionView();
    view.setText(count > 0 ? String.valueOf(count) : null);
    }
    
    Run Code Online (Sandbox Code Playgroud)


Azi*_*ari 5

哦是的......你可以改变那个计数器值.

根据您提供的图像,您可以使用Rudson Lima的Material Design导航抽屉

在它的库中public void setNewCounterValue(int drawerItemPosition, int counterValue);,类中有一个函数NavigationLiveo.

希望您能正确使用其对象来调用此函数.

最好的运气... :-)