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

时间:2015-06-25 12:36:07

标签: android navigation-drawer material-design navigationview

我的问题非常简单,如何在NavigationView上为Material Design Drawer添加项目的通知值?

enter image description here

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

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

5 个答案:

答案 0 :(得分:12)

使用操作视图,可以使用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);
    }
    

答案 1 :(得分:5)

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

根据您提供的图像,您正在使用Rudson Lima's Material Design Navigation Drawer

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

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

最好的运气......: - )

答案 2 :(得分:1)

您应该检查原始项目的确切方式&#39; github:

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

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

答案 3 :(得分:0)

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

This tutorial是另一个&#34;如何制作导航抽屉&#34;教程,详细介绍了如何使用ListView适配器来适应通知按钮。我认为这很可能是你想要的。

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

答案 4 :(得分:0)

您可以使用库来实现此目的。试试MaterialNavigationDrawerMaterialDrawer