2012-03-27 17 views

Odpowiedz

4

Aby zmienić bez definiowania zasobu stylu, możemy użyć 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; 
} 

Podczas formatowania stylu tekstu zostanie wyświetlony wyjątek "Niepoprawny typ elementu ładunku". Aby tego uniknąć, należy zastąpić onMenuItemSelected i użyć return true lub false.

referencyjny:

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

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

+1

Próbowałem tego i nie miało to żadnego efektu. Czy to działa, gdy skompilujesz i uruchomisz Androida 4.4? – arlomedia

+1

To rozwiązanie nie działa na Androidzie 5.0 i 6.0 – Akshay

1

Spróbuj odpowiedź Firewall_Sudhan ale iteracja podmenu menu

@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

To rozwiązanie nie działa na Androidzie 5.0 i 6.0 – Akshay

Powiązane problemy