如何在android中向actionbars发出警报
我在我的动作栏里有一个通知菜单,当我收到新的通知时,我想提醒它,如何向动作栏发出警告 我要在三点按钮上显示警报 在通知按钮中如何在android中向actionbars发出警报,android,android-studio,Android,Android Studio,我在我的动作栏里有一个通知菜单,当我收到新的通知时,我想提醒它,如何向动作栏发出警告 我要在三点按钮上显示警报 在通知按钮中 您必须在工具栏上放置一个通知图标,以便轻松显示。 试试这个: public boolean onCreateOptionsMenu(Menu menu) { //inflate menu getMenuInflater().inflate(R.menu.menu_my, menu); // Get the notifications Menu
您必须在工具栏上放置一个通知图标,以便轻松显示。 试试这个:
public boolean onCreateOptionsMenu(Menu menu) {
//inflate menu
getMenuInflater().inflate(R.menu.menu_my, menu);
// Get the notifications MenuItem and LayerDrawable (layer-list)
MenuItem item = menu.findItem(R.id.action_notifications);
LayerDrawable icon = (LayerDrawable) item.getIcon();
// Update LayerDrawable's BadgeDrawable
Utils2.setBadgeCount(this, icon, 2);
return true;
}
菜单\u my.xml
:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
<item
android:id="@+id/action_notifications"
android:icon="@drawable/ic_menu_notifications"
android:title="Notifications"
app:showAsAction="always" />
</menu>
这个类有助于设置数字
public class Utils2 {
public static void setBadgeCount(Context context, LayerDrawable icon, int count) {
BadgeDrawable badge;
// Reuse drawable if possible
Drawable reuse = icon.findDrawableByLayerId(R.id.ic_badge);
if (reuse != null && reuse instanceof BadgeDrawable) {
badge = (BadgeDrawable) reuse;
} else {
badge = new BadgeDrawable(context);
}
badge.setCount(count);
icon.mutate();
icon.setDrawableByLayerId(R.id.ic_badge, badge);
}
}
好吧,看来我理解代码是如何工作的,但最重要的是,这真的需要吗?那是干什么用的?我应该在res/drawable中将其命名为什么?还有drawable/ice_skate那是什么图像?你可以跳过它。我正在使用一个asyncronus调用,使用Reformation 2获取通知数,我可以使用Utils2.setBadgeCount(这个,图标,2);在调用intead-inside-onCreateOptionMenu的内部,或者我需要放置Utils2.setBadgeCount(这个图标为2);onCreateOptionMenu内的内部改装调用?将其设置在您获得价值的位置。您不能在空对象上设置它。如果它有效,我将通过单击复选标记要求您不要忘记接受它(✔️) 在投票箭头的左边。应该换成绿色。我会很感激的。谢谢!
public class Utils2 {
public static void setBadgeCount(Context context, LayerDrawable icon, int count) {
BadgeDrawable badge;
// Reuse drawable if possible
Drawable reuse = icon.findDrawableByLayerId(R.id.ic_badge);
if (reuse != null && reuse instanceof BadgeDrawable) {
badge = (BadgeDrawable) reuse;
} else {
badge = new BadgeDrawable(context);
}
badge.setCount(count);
icon.mutate();
icon.setDrawableByLayerId(R.id.ic_badge, badge);
}
}