我刚刚开始使用新组件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()方法上更新它.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。