21

我的问题很简单,如何在NavigationView上像这样为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>
4

5 回答 5

15

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"/>
  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);
    }
    
于 2015-12-22T01:07:58.550 回答
5

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

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

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

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

祝你好运... :-)

于 2015-07-04T07:51:19.973 回答
1

您应该在原始项目的 github 上准确检查它是如何完成的:

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

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

于 2015-07-03T11:32:05.843 回答
0

通过一些研究,我发现,不,没有真正的方法可以将通知添加到抽屉中。但是,Developers 的创建导航抽屉教程中显示的示例显示了如何在每次打开时强制重绘(以及如何使用菜单 XML 表实现它)。它没有详细介绍如何添加通知,但还有其他来源。

本教程是另一个“如何制作导航抽屉”教程,其中包含有关如何调整 ListView 适配器以适应通知按钮的详细信息。我认为这很可能是您正在寻找的。

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

于 2015-07-02T13:57:05.610 回答
0

您可以为此使用库。尝试MaterialNavigationDrawerMaterialDrawer

于 2015-07-03T00:57:05.323 回答