2012-03-22 6 views
0

メニュー項目にバッジを表示したいと思います。どうすればいいのですか?Android - MenuItemsにバッジを描く

基本的に、私はキャンバスを描画したり使用したりしたくないです。

+0

あなたがメッセージのアイコンのようなものを望む場合にのみ、それは複雑な作業です。..右上 –

+0

はい、ビットマップと数たいですカスタムウィジェットを使用して処理する必要があります。あなたは、特定のテキストと重力を持つフォームを持つ画像を持つボタンを簡単に作ることができます。 –

+0

であなたのメニュー項目に関連する画像は... –

答えて

0

Androidのオプションメニューをカスタマイズして、背景を設定したり、テキストの外観を変更することができます。メニューの背景とテキストの色は、テーマとスタイルを使用して変更できませんでした。

Androidソースコード(data\res\layout\icon_menu_item_layout.xml)は、メニューレイアウトの「com.android.internal.view.menu.IconMenuItem」ビューのカスタムアイテムを使用します。上記のクラスを変更してメニューをカスタマイズすることができます。これを実現するには、LayoutInflaterファクトリクラスを使用し、ビューの背景とテキストの色を設定します。

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.my_menu, menu); 
    getLayoutInflater().setFactory(new Factory() { 
     @Override 
     public View onCreateView(String name, Context context, AttributeSet attrs) { 
      if (name .equalsIgnoreCase(“com.android.internal.view.menu.IconMenuItemView”)) { 
       try{ 
        LayoutInflater f = getLayoutInflater(); 
        final View view = f.createView(name, null, attrs); 
        new Handler().post(new Runnable() { 
         public void run() { 
          // Set the background drawable 
          view .setBackgroundResource(R.drawable.my_ac_menu_background); 

          // Set the text color 
          ((TextView) view).setTextColor(Color.WHITE); 
         } 
        }); 
        return view; 
       } 
       catch (InflateException e) { 
       } 
       catch (ClassNotFoundException e) { 
       } 
      } 
      return null; 
     } 
    }); 
    return super.onCreateOptionsMenu(menu); 
} 
+0

これは私を助けたが、それは私が探していたものではなかった –

0

メニューアイテムは、例えば、属性のアイコンがあります。上記の例

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item 
     android:id="@+id/mi_main_preferences" 
     android:title="@string/cmd_preferences" 
     android:icon="@android:drawable/ic_menu_preferences"> 
    </item> 
</menu> 

は、システムアイコン(設定メニュー)を使用しています。

+0

しかし、私はそれにbbadgeを持つことができます –

+0

申し訳ありませんが、私の英語は良くありません。アイコンとバッジの違いはありますか? –

+0

はい、バッジがアイコンの上に表示されます –

1

LayerListDrawableを作成し、通常のアイコンを第1のレイヤ、バッジを第2のレイヤとして使用し、setIcon()MenuItemに使用してみてください。

+1

説明するサンプルコードはありますか? PLZ –

関連する問題