使用new NavigationView,我们可以通过XML菜单资源设置抽屉的项目.
有了它,我们可以设置每个项目
<item
android:id="@+id/drawer_my_account"
android:icon="@drawable/ic_my_account"
android:title="@string/drawer_my_account" />
Run Code Online (Sandbox Code Playgroud)
但现在,我想为抽屉中的每个项目设置一个自定义字体,我无法通过XML或Java代码找到方法.有办法吗?
我使用Android Design Support Library在DrawerLayout中创建了一个NavigationView
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<!-- other views -->
<android.support.design.widget.NavigationView
android:id="@+id/navigation"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:menu="@menu/my_navigation_items" />
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)
my_navigation_items.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item
android:id="@+id/bookmarks_drawer"
android:icon="@drawable/ic_drawer_bookmarks"
android:title="@string/bookmarks" />
<item
android:id="@+id/alerts_drawer"
android:icon="@drawable/ic_drawer_alerts"
android:title="@string/alerts" />
<item
android:id="@+id/settings_drawer"
android:icon="@drawable/ic_drawer_settings"
android:title="@string/settings" />
</group>
</menu>
Run Code Online (Sandbox Code Playgroud)
现在,我想为NavigationView下面的图像中的每个项目设置未读通知计数器:
如何在项目上设置未读通知计数器NavigationView?
android android-support-library drawerlayout android-design-library navigationview
我的问题很简单,如何添加项目的通知值向右NavigationView为材料设计抽屉这样呢?

菜单项中是否有用于定义抽屉的属性?
<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>
Run Code Online (Sandbox Code Playgroud) 我正在尝试通过使用Spannable String来更改我的字符串以使用中间的数字制作徽章.我可以通过设置BackGroundColorSpan突出显示相应的字母/数字,但需要帮助使它更漂亮.我希望有圆角,整个形状周围有一点填充.
这篇文章非常接近我正在尝试做的事情:Android SpannableString在文本部分后面设置背景
由于它与我的应用程序交互的方式,我真的需要将资源保留为TextView.
任何想法如何利用ReplacementSpan为我的特殊情况?
这是我的代码片段:
if (menuItem.getMenuItemType() == SlidingMenuItem.MenuItemType.NOTIFICATIONS) {
myMenuRow.setTypeface(null, Typeface.NORMAL);
myMenuRow.setTextColor(getContext().getResources().getColor(R.color.BLACK));
myMenuRow.setActivated(false);
SpannableString spannablecontent = new SpannableString(myMenuRow.getText());
spannablecontent.setSpan(new BackgroundColorSpan(Color.argb(150,0,0,0)), 18, myMenuRow.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
myMenuRow.setText(spannablecontent);
Run Code Online (Sandbox Code Playgroud) 我使用NavigationDrawer来自 desin lib
compile 'com.android.support:design:24.0.0'
Run Code Online (Sandbox Code Playgroud)
有 XML
....
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main_second"
app:menu="@menu/activity_third_drawer" />
....
Run Code Online (Sandbox Code Playgroud)
有一点我正在设置菜单
app:menu="@menu/activity_third_drawer"
Run Code Online (Sandbox Code Playgroud)
有XML菜单
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_inbox"
android:icon="@drawable/ic_mail_outline_white"
android:title="@string/inbox" />
<item
android:id="@+id/nav_gallery"
android:icon="@drawable/ic_close_24dp"
android:title="@string/gallery" />
<item
android:id="@+id/nav_slideshow"
android:icon="@drawable/ic_close_24dp"
android:title="@string/slideshow" />
<item
android:id="@+id/nav_manage"
android:icon="@drawable/ic_close_24dp"
android:title="@string/tools" />
</group>
<item android:title="@string/about_app">
<menu>
<item
android:id="@+id/nav_about"
android:icon="@drawable/ic_close_24dp"
android:title="@string/about1" />
</menu>
</item>
</menu>
Run Code Online (Sandbox Code Playgroud)
最终它看起来像这样
但我需要当消息进入收件箱时,它应该被标记为NavigationDrawer.
像这样
有很多不同的库可以帮助解决这个问题,我选择了这个。
这个库可以在任何你想要的地方附加徽章,但没有一个样本锄头可以将它附加到<item>. 最接近的示例是如何附加到XML
<com.readystatesoftware.viewbadger.BadgeView
android:id="@+id/badge"
android:layout_width="wrap_content" …Run Code Online (Sandbox Code Playgroud)