2012-03-27 10 views

答えて

2

は、プログラムテキストメニューアイテムを変更する方法について説明し、このリンクをクリックしてください。アンドロイド用

http://developer.android.com/guide/topics/ui/actionbar.html#Style

チェック:テキストのスタイルリソースを定義するためのactionMenuTextColor。

+8

のサブメニューを反復することは、スタイルリソースを定義せずにそれを変更する方法はありますか? – Fabii

+4

これは質問された質問に答えません。 – Odys

+0

...それでも受け入れられた答えです! –

4

スタイルリソースを定義せずに変更する場合は、SpannableStringを使用できます。

@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
      //To style first menu item 
    MenuItem menuItem = menu.getItem(0); 
    CharSequence menuTitle = menuItem.getTitle(); 
    SpannableString styledMenuTitle = new SpannableString(menuTitle); 
    styledMenuTitle.setSpan(new ForegroundColorSpan(Color.parseColor("#00FFBB")), 0, menuTitle.length(), 0); 
    menuItem.setTitle(styledMenuTitle); 

    return super.onPrepareOptionsMenu(menu); 
} 

@Override 
public boolean onMenuItemSelected(int featureId, MenuItem item) { 

    Toast.makeText(this, item.getTitle() + " clicked!", Toast.LENGTH_LONG).show(); 
    return true; 
} 

テキストスタイルをフォーマットすると、「無効なペイロードアイテムタイプ」例外が発生します。これを避けるには、onMenuItemSelectedをオーバーライドし、trueまたはfalseを返します。

参考:

Android: java.lang.IllegalArgumentException: Invalid payload item type

http://vardhan-justlikethat.blogspot.in/2013/02/solution-invalid-payload-item-type.html

+1

これを試しても何の効果もありませんでした。 Android 4.4でコンパイルして実行すると、あなたのために動作しますか? – arlomedia

+1

この解決策はandroid 5.0と6.0では動作しません – Akshay

1

はFirewall_Sudhan答えをしてみたが、メニュー

@Override 
public void onPrepareOptionsMenu(Menu menu) { 
    super.onPrepareOptionsMenu(menu); 
    SubMenu subMenu = menu.getItem(0).getSubMenu(); 
    for (int i = 0; i < subMenu.size(); i++) { 
     MenuItem menuItem = subMenu.getItem(i); 
     CharSequence menuTitle = menuItem.getTitle(); 
     SpannableString styledMenuTitle = new SpannableString(menuTitle); 
     styledMenuTitle.setSpan(new ForegroundColorSpan(Color.BLACK), 0, menuTitle.length(), 0); 
     menuItem.setTitle(styledMenuTitle); 
    } 
} 
+0

この解決策はandroid 5.0と6.0では動作しません – Akshay

関連する問題