android – 如何在NavigationView中的项目上添加徽章

我刚刚开始使用新组件android.support.design.widget.NavigationView,在此之前我使用标准列表视图导航抽屉但是现在我开始使用新的组件导航视图并且有问题在项目上实现徽章.
现在有人如何解决这个问题?

解决方法:

这可以通过以下步骤完成

1.在导航抽屉菜单添加“actionViewClass”属性

在使用导航抽屉创建“Helloworld”应用程序后,在项目层次结构视图的“菜单文件夹下查找文件“activity_main_drawer.xml”(即youractivityname_drawer.xml).
识别组项并添加“app:actionViewClass = android.widget.TextView”,如下所示:

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

<group android:checkableBehavior="single">
    <item
        android:id="@+id/nav_camera"
        android:icon="@drawable/ic_menu_camera"
        android:title="Import" />
    <item
        android:id="@+id/nav_gallery"
        app:actionViewClass="android.widget.TextView"
        android:icon="@drawable/ic_menu_gallery"
        android:title="gallery" />
    <item
        android:id="@+id/nav_slideshow"
        app:actionViewClass="android.widget.TextView"
        android:icon="@drawable/ic_menu_slideshow"
        android:title="Slideshow" />
    <item
        android:id="@+id/nav_manage"
        android:icon="@drawable/ic_menu_manage"
        android:title="Tools" />
</group>

2.声明导航抽屉菜单项并使用徽章值初始化项目.

在您的主Activity中,声明导航抽屉的菜单项,如下所示

//Create these objects above OnCreate()of your main activity
TextView slideshow,gallery;

//These lines should be added in the OnCreate() of your main activity
gallery=(TextView) MenuItemCompat.getActionView(navigationView.getMenu().findItem(R.id.nav_gallery));
slideshow=(TextView) MenuItemCompat.getActionView(navigationView.getMenu().findItem(R.id.nav_slideshow));

//This method will initialize the count value
initializeCountDrawer();

initializeCountDrawer()可以在需要的地方调用.它还可用于更新导航抽屉菜单项中的计数或徽章值.

private void initializeCountDrawer() {
    //Gravity property aligns the text
    gallery.setGravity(Gravity.CENTER_VERTICAL);
    gallery.setTypeface(null, Typeface.BOLD);
    gallery.setTextColor(getResources().getColor(R.color.colorAccent));
    gallery.setText("99+");
    slideshow.setGravity(Gravity.CENTER_VERTICAL);
    slideshow.setTypeface(null,Typeface.BOLD);                
    slideshow.setTextColor(getResources().getColor(R.color.colorAccent));

    //count is added     
    slideshow.setText("7");
}

添加上述方法后,运行该应用程序.瞧瞧!
简单的徽章计数将显示在导航抽屉的“图库”和“幻灯片菜单项上.

动态徽章值

如果需要动态标记值,例如更新API调用sqlite数据库中的值,请创建可重用的方法并在Activity的OnStart()或OnResume()方法上更新它.

完整的源代码可以找到here

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...