如何为 Material Design Drawer 的 NavigationView 项目添加通知值?

How to add notification value for item on NavigationView for Material Design Drawer?

我的问题很简单,如何在NavigationView for Material Design Drawer上的项目右侧添加通知值?

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

<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>

根据一些研究,我发现,不,没有真正的方法可以将通知添加到抽屉中。但是,Developers 的 Creating a Navigation Drawer 教程中显示的示例显示了如何在每次打开时强制重绘(以及如何使用菜单 XML 工作表实现它)。它没有详细说明如何添加通知,但还有其他来源。

This tutorial 是另一个 "how to make a navigation drawer" 教程,其中包含有关如何调整 ListView 适配器以适应通知按钮的确切详细信息。我认为这很可能就是您要找的。

祝你好运!希望对您有所帮助。

您可以为此使用图书馆。尝试 MaterialNavigationDrawer or MaterialDrawer

你应该检查它是如何在原始项目的 github:

上完成的

https://github.com/rudsonlive/NavigationDrawer-MaterialDesign/ https://play.google.com/store/apps/details?id=br.liveo.navigationliveo

基本上,您为 ListView 的行创建自定义视图并相应地更新它们。

哦是的...您可以更改该计数器值。

从您提供的图像来看,您正在使用 Rudson Lima's Material Design Navigation Drawer

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

希望您能正确使用它的对象来调用这个函数。

祝你好运...:-)

AppCompat-V7 的第 23 版中的 NavigationView 使用操作视图可以实现这一点。 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"/>
  1. 从您希望在 menu/nav_drawer.xml 中显示计数器值的每个项目添加对它的引用(确保您使用 app 命名空间):

    <item 
        ...
        app:actionLayout="@layout/activity_main_nav_drawer_menu_counter"
        />
    
  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);
    }