在题目中,辅助图标下,我指的是主图标右下角的小图标。这是一个示例:带有数字的小图标显示通知的数量:
当然,我想问的是如何添加这个带有数字的小图标,并对其进行编程,以便根据警报的数量显示必要的图标,但是如果您提供的解决方案不是小图标,而是一个用 Java 画成圆圈的数字,那么这个也很合适(也许更好)。
更新
试过katso 的解决方案;活动代码使应用程序崩溃。
E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference
我已经遇到过这样的问题并且基于澄清
它在初始化类字段时调用,在调用其构造函数之前创建类的实例时初始化类字段。而这一切发生在 onCreate 方法被调用之前很久。
在方法之前声明变量onCreate并在其中初始化它们。现在这个错误:
为了以防万一,我发布了完整的应用程序代码。ic_bell任何图像都可以用作图标。部分代码由于某种原因没有显示,但可以从单击“修复”时出现的输入字段中复制。
主活动.java
导入 android.os.Bundle;导入 android.support.design.widget.FloatingActionButton;导入 android.support.design.widget.Snackbar;导入 android.support.v7.app.AppCompatActivity;导入 android.support.v7.widget.Toolbar;导入 android.view.View;导入 android.view.Menu;导入 android.view.MenuItem;导入 android.widget.TextView;
公共类 MainActivity 扩展 AppCompatActivity {
View count; TextView notifCount; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); count = menu.findItem(R.id.badge).getActionView(); notifCount = (TextView)count.findViewById(R.id.notif_count); } private int mNotifCount = 0; @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main, menu); notifCount.setText(String.valueOf(mNotifCount)); return super.onCreateOptionsMenu(menu); } private void setNotifCount(int count){ mNotifCount = count; invalidateOptionsMenu(); } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == R.id.badge) { return true; } return super.onOptionsItemSelected(item); }}
menu_main.xml
<item android:id="@+id/badge" android:actionLayout="@layout/actionbar_notifitcation_icon" android:showAsAction="always" android:icon="@drawable/ic_bell" android:title="@string/hotlist" />actionbar_notification.xml
<ImageView android:id="@+id/image" android:src="@drawable/ic_bell" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center"/> <TextView android:id="@+id/notif_count" android:layout_width="wrap_content" android:minWidth="17dp" android:textSize="12sp" android:textColor="#ffffffff" android:layout_height="wrap_content" android:gravity="center" android:background="@drawable/rounded_square"/>rounded_square


菜单项
菜单/menu_actionbar.xml
按钮布局
布局/actionbar_notification_icon.xml
徽章背景
可绘制/rounded_square.xml
在激活中: