Как добавить значение уведомления для элемента NavigationView для Material Design Drawer?
Мой вопрос очень прост, как добавить значение значения уведомления элемента NavigationView для Material Design Drawer, как это?
![enter image description here]()
Есть ли свойство в элементах меню для определения ящика?
<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>
Ответы
Ответ 1
Это возможно с помощью NavigationView
из версии 23 AppCompat-V7 с использованием представлений действий.
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);
}
Ответ 2
Oh Да... Вы можете изменить это значение счетчика.
Из изображений, предоставленных вами, он выглядит вживую, вы используете Ящик для рисования материалов Rudson Lima
В его библиотеке есть функция public void setNewCounterValue(int drawerItemPosition, int counterValue);
внутри класса NavigationLiveo
.
Надеюсь, что вы правильно используете его объект, чтобы вызвать эту функцию.
Лучшее из удачи...: -)
Ответ 3
Вы должны точно проверить, как это было сделано в исходном проекте github:
https://github.com/rudsonlive/NavigationDrawer-MaterialDesign/
https://play.google.com/store/apps/details?id=br.liveo.navigationliveo
В основном вы создаете настраиваемое представление для строк ListView и соответствующим образом обновляете их.
Ответ 4
Из некоторых исследований я обнаружил, что нет, нет никакого реального способа добавления уведомлений в ящик. Однако пример, показанный в "Создание ящика для навигации" в "Разработчиках", показывает, как принудительно перерисовывать каждый раз, когда он открывается (а также как реализовать это с помощью XML-листов меню). В нем нет подробных сведений о том, как добавлять уведомления, но для этого есть и другие источники.
Этот учебник - это еще одно учебное пособие "Как сделать навигационный ящик" с бонусом точной информации о том, как адаптировать адаптеры ListView кнопку уведомления. Я думаю, что это более чем вероятно то, что вы ищете.
Удачи! Надеюсь, что это поможет.
Ответ 5
Вы можете использовать библиотеку для этого. Попробуйте MaterialNavigationDrawer или MaterialDrawer