Autore Topic: Impostare il colore del background nel menu  (Letto 4424 volte)

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Impostare il colore del background nel menu
« il: 14 Maggio 2010, 13:24:41 CEST »
+2
Ultimamente mi è capitato di dover settare nel menu un colore del background diverso da quello di default di Android.
Purtroppo non è possibile farlo attraverso i temi o attraverso delle api ufficiali.
Vi propongo quindi questo snippet sperando che a qualcuno possa essere utile.

Codice (Java): [Seleziona]
protected void setMenuBackground () {
                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 () {
                                                                view.setBackgroundResource( R.drawable.menu_background );
                                                        }
                                                } );
                                                return view;
                                        }
                                        catch ( InflateException e ) {
                                        }
                                        catch ( ClassNotFoundException e ) {

                                        }
                                }
                                return null;
                        }
                } );
        }

Questo metodo è da richiamare nell'onCreate dell'activity.

Il codice di menu_background.xml è il seguente:

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

        <item android:state_pressed="false">
                <shape android:shape="rectangle">
                        <gradient android:startColor="@color/white"
                                android:endColor="@color/white" android:angle="270" />
                </shape>
        </item>

        <item android:state_pressed="true">
                <shape android:shape="rectangle">
                        <gradient android:startColor="@color/white"
                                android:endColor="@color/green" android:angle="270" />
                </shape>
        </item>

        <item android:state_focused="false">
                <shape android:shape="rectangle">
                        <gradient android:startColor="@color/white"
                                android:endColor="@color/green" android:angle="270" />
                </shape>
        </item>
</selector>


Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:Impostare il colore del background nel menu
« Risposta #1 il: 14 Maggio 2010, 13:36:24 CEST »
0
Non mi sembra proprio uno snippet :P
Avresti dovuto fare un tutorial vero a proprio data la consistenza del codice.
Postate il LogCat LogCat LogCat LogCat LogCat

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Impostare il colore del background nel menu
« Risposta #2 il: 14 Maggio 2010, 14:10:57 CEST »
0
Non mi sembra proprio uno snippet :P
Avresti dovuto fare un tutorial vero a proprio data la consistenza del codice.

Beh dai fondamentalmente è una funzione ;)

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Impostare il colore del background nel menu
« Risposta #3 il: 17 Febbraio 2011, 09:55:32 CET »
0
Sembra che questo metodo non funzioni su Android 2.3 (colpa dell'uso di API interne). Vedrò se riesco a trovare un altro workaround.