7

ActionBar MenuItem のアイコンを動的に更新して、番号付きの「赤いバッジ」を表示するにはどうすればよいですか? (概念的には「未読メッセージ数」に似ています)

Android アプリケーションで ActionBarSherlock を使用しており、API レベル 10+ を対象としています。私のアプリケーションはモバイル データ キャプチャ用であり、ユーザーが新しいデータをすぐに送信できず、電話でローカルに保存する必要がある場合があります (接続が悪い場合など)。

電話にローカルに保存されている「未提出」のアイテムがあるときはいつでも、ユーザーが UnsubmittedItems アクティビティをクリックしてアップロードを手動でトリガーできるように、(アクション バーに) メニュー項目を表示したいと思います。

理想的には、このメニュー アイテムには、未送信アイテムの数をグラフィカルに表示するものがあります (電子メールまたは SMS アプリが未読メッセージの数をバッジとして表示するのと同様です)。現在、私はちょうどやっています:

unsubmittedMenuItem.setTitle( Integer.toString(numUnsubmitted) );

これは機能しますが、2 つの問題があります。アイコンを使用し、タイトルをわかりやすいもの (「未提出」) にしておくことと、赤い円などのカスタム レイアウトまたはデザインをここに配置したいことです。番号の背後にある背景。

これを達成する方法について考えていますか?これまでのところ、私の調査では 2 つの可能性が示唆されています。

  1. いくつかの範囲の数値 (例: 1、2、3... 10+) に対して事前に作成されたレベル リスト ドローアブルを使用し、次に unsubmittedMenuItem.getIcon().setLevel( numUnsubmitted )
  2. Bitmap および Canvas API を使用して、ビットマップ全体を完全に動的に構築します。

これらは、テキストをビットマップにレンダリングしているという意味では似ていますが (#1 のようにオフラインで、または #2 のようにオンザフライで)、可能であれば、ActionBar の「ネイティブ」テキスト レンダリングを活用することは素晴らしいことです。 TextView のように、その後ろに赤い円を挿入します。

アイコン ドローアブル専用のカスタム レイアウトを設定する方法はありますか? (アイコンのためだけに、完全な actionLayout ではありませんか?)

4

1 に答える 1

6

これを行うには多くの方法があります。

  1. LayerDrawableアイコン画像の上にバッジ画像を重ねて使用します。
  2. Drawableアイコンとバッジを手動で拡張して描画するカスタム クラスを記述します。
  3. カスタム アクション アイテム ビューを使用して、アイコンをバッジImageViewのオーバーレイと共に使用します。TextView
于 2012-10-24T21:33:25.920 に答える