如何为 Material Design Drawer 的 NavigationView 项目添加通知值?
How to add notification value for item on NavigationView for Material Design Drawer?
我的问题很简单,如何在NavigationView for 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>
根据一些研究,我发现,不,没有真正的方法可以将通知添加到抽屉中。但是,Developers 的 Creating a Navigation Drawer 教程中显示的示例显示了如何在每次打开时强制重绘(以及如何使用菜单 XML 工作表实现它)。它没有详细说明如何添加通知,但还有其他来源。
This tutorial 是另一个 "how to make a navigation drawer" 教程,其中包含有关如何调整 ListView 适配器以适应通知按钮的确切详细信息。我认为这很可能就是您要找的。
祝你好运!希望对您有所帮助。
您可以为此使用图书馆。尝试 MaterialNavigationDrawer or MaterialDrawer
你应该检查它是如何在原始项目的 github:
上完成的
https://github.com/rudsonlive/NavigationDrawer-MaterialDesign/
https://play.google.com/store/apps/details?id=br.liveo.navigationliveo
基本上,您为 ListView 的行创建自定义视图并相应地更新它们。
哦是的...您可以更改该计数器值。
从您提供的图像来看,您正在使用 Rudson Lima's Material Design Navigation Drawer
在它的库中 class NavigationLiveo
中有一个函数 public void setNewCounterValue(int drawerItemPosition, int counterValue);
。
希望您能正确使用它的对象来调用这个函数。
祝你好运...:-)
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"/>
从您希望在 menu/nav_drawer.xml
中显示计数器值的每个项目添加对它的引用(确保您使用 app
命名空间):
<item
...
app:actionLayout="@layout/activity_main_nav_drawer_menu_counter"
/>
添加一个方法来为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);
}
我的问题很简单,如何在NavigationView for 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>
根据一些研究,我发现,不,没有真正的方法可以将通知添加到抽屉中。但是,Developers 的 Creating a Navigation Drawer 教程中显示的示例显示了如何在每次打开时强制重绘(以及如何使用菜单 XML 工作表实现它)。它没有详细说明如何添加通知,但还有其他来源。
This tutorial 是另一个 "how to make a navigation drawer" 教程,其中包含有关如何调整 ListView 适配器以适应通知按钮的确切详细信息。我认为这很可能就是您要找的。
祝你好运!希望对您有所帮助。
您可以为此使用图书馆。尝试 MaterialNavigationDrawer or MaterialDrawer
你应该检查它是如何在原始项目的 github:
上完成的https://github.com/rudsonlive/NavigationDrawer-MaterialDesign/ https://play.google.com/store/apps/details?id=br.liveo.navigationliveo
基本上,您为 ListView 的行创建自定义视图并相应地更新它们。
哦是的...您可以更改该计数器值。
从您提供的图像来看,您正在使用 Rudson Lima's Material Design Navigation Drawer
在它的库中 class NavigationLiveo
中有一个函数 public void setNewCounterValue(int drawerItemPosition, int counterValue);
。
希望您能正确使用它的对象来调用这个函数。
祝你好运...:-)
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"/>
从您希望在
menu/nav_drawer.xml
中显示计数器值的每个项目添加对它的引用(确保您使用app
命名空间):<item ... app:actionLayout="@layout/activity_main_nav_drawer_menu_counter" />
添加一个方法来为
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); }