2012-03-27 7 views

risposta

2

Segui questo link che spiega come cambiare menuitem testo a livello di codice.

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

Verificare la presenza di Android: actionMenuTextColor per definire una risorsa stile per il testo.

+8

Esiste un modo per cambiarlo senza definire una risorsa stile? – Fabii

+4

Questo non risponde alla domanda posta. – Odys

+0

... eppure è la risposta accettata! –

4

Per modificare senza definire una risorsa di stile, è possibile utilizzare 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; 
} 

Mentre si formatta lo stile di testo, si otterrà l'eccezione "Tipo di articolo di carico utile non valido". Per evitare ciò, sovrascrivi onMenuItemSelected e usa return true o false.

Riferimento:

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

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

+1

Ho provato questo e non ha avuto alcun effetto. Funziona per te quando compilato ed eseguito su Android 4.4? – arlomedia

+1

Questa soluzione non funziona su Android 5.0 e 6.0 – Akshay

1

Prova risposta Firewall_Sudhan ma iterando il sottomenu del 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

Questa soluzione non funziona su Android 5.0 e 6.0 – Akshay