ステップごとの機能は次のとおりです。
menu.xmlを追加します
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto">
<item
Android:id="@+id/actionNotifications"
Android:icon="@drawable/ic_info_outline_white_24dp"
Android:menuCategory="secondary"
Android:orderInCategory="1"
Android:title="Cart"
app:actionLayout="@layout/notification_layout"
app:showAsAction="always" />
</menu>
次に、notification_layout.xmlを追加します。このレイアウトは、通知アイコンレイアウトとして使用されます
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
style="@Android:style/Widget.ActionButton"
Android:layout_width="wrap_content"
Android:layout_height="fill_parent"
Android:layout_gravity="center"
Android:background="@Android:color/transparent"
Android:clickable="true"
Android:gravity="center"
Android:orientation="vertical">
<ImageView
Android:id="@+id/hotlist_bell"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_margin="0dp"
Android:contentDescription="Notification Icon"
Android:gravity="center"
Android:src="@drawable/ic_info_outline_white_24dp" />
<TextView xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/txtCount"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginBottom="@dimen/x5dp"
Android:layout_marginLeft="@dimen/x10dp"
Android:layout_marginRight="0dp"
Android:background="@drawable/pointer_"
Android:gravity="center"
Android:minWidth="17sp"
Android:text="0"
Android:textColor="#ffffffff"
Android:textSize="12sp" />
</RelativeLayout>
今アクティビティ中
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
final View notificaitons = menu.findItem(R.id.actionNotifications).getActionView();
txtViewCount = (TextView) notificaitons.findViewById(R.id.txtCount);
updateHotCount(count++);
txtViewCount.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
updateHotCount(count++);
}
});
notificaitons.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO
}
});
return true;
}
次の関数(stackoverflowから取得)をアクティビティ内に配置して、カウンターを更新できます。
public void updateHotCount(final int new_hot_number) {
count = new_hot_number;
if (count < 0) return;
runOnUiThread(new Runnable() {
@Override
public void run() {
if (count == 0)
txtViewCount.setVisibility(View.GONE);
else {
txtViewCount.setVisibility(View.VISIBLE);
txtViewCount.setText(Integer.toString(count));
// supportInvalidateOptionsMenu();
}
}
});
}
私はそれが可能だと思います:
<ImageView
Android:id="@+id/counterBackground"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:background="@drawable/unread_background" /> <!-- your icon -->
<TextView
Android:id="@+id/count"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="1"
Android:textSize="8sp"
Android:layout_centerInParent="true"
Android:textColor="#FFFFFF" />
そして、そのアイコンにbackground
。alsoとして使用する場合、デフォルトのアイコンも削除/無効にする必要があります。
あなたが見てみたいことがあります:
ナビゲーションドロワーアクションバーからアプリアイコンを削除できない
ナビゲーションドロワーアイコンを削除し、アプリアイコンを使用して開きます
https://stackoverflow.com/a/29160904/440911
また、Android-sdk/platforms/Android-22/data/res
、そのアイコンがあるはずです。それを見つけて、目的に使用するだけです(たとえば、ImageView
を追加し、as background
を追加します)