Frage

Diese Frage hat hier bereits eine Antwort:

Ich versuche, das Standard hellgrau in ein hellgrünes zu ändern. Es scheint, dass es keine einfache Möglichkeit gibt, dies zu tun (zum Beispiel durch Android -Themen), aber ich habe eine Problemumgehung gefunden, wie auf dieser Seite erläutert wurde: http://tinyurl.com/342dgn3.

Der Autor scheint verschwunden zu sein. Kann mir jemand helfen, diesen Code zu integrieren? Ich verstehe nicht, wo ich die implementieren muss LayoutInflater Fabrikklasse.

War es hilfreich?

Lösung

Wenn Sie das Menü aufblasen, rufen Sie diese setMenubackground () -Methode auf

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
    MenuInflater inflater=getMenuInflater();
    inflater.inflate(R.menu.menu,menu);
    setMenuBackground(); 
    return true;    
}

und schreiben Sie dies in die Methode setMenubackground ()

    protected void setMenuBackground(){                     
        // Log.d(TAG, "Enterting setMenuBackGround");  
        getLayoutInflater().setFactory( new Factory() {  
            public View onCreateView(String name, Context context, AttributeSet attrs) {
                if ( name.equalsIgnoreCase( "com.android.internal.view.menu.IconMenuItemView" ) ) {
                    try { // Ask our inflater to create the view  
                        LayoutInflater f = getLayoutInflater();  
                        final View view = f.createView( name, null, attrs );  
                        /* The background gets refreshed each time a new item is added the options menu.  
                        * So each time Android applies the default background we need to set our own  
                        * background. This is done using a thread giving the background change as runnable 
                        * object */
                        new Handler().post( new Runnable() {  
                            public void run () {  
                                // sets the background color   
                                view.setBackgroundResource( R.color.androidcolor);
                                // sets the text color              
                                ((TextView) view).setTextColor(Color.BLACK);
                                // sets the text size              
                                ((TextView) view).setTextSize(18);
                }
                        } );  
                    return view;
                }
            catch ( InflateException e ) {}
            catch ( ClassNotFoundException e ) {}  
        } 
        return null;
    }}); 
}

Andere Tipps

Dies ist eindeutig ein Problem, das viele Programmierer haben und für die Google noch keine zufriedenstellende, unterstützte Lösung bietet.

Der SetMenubackground () -Hack, den Abhay Kumar und Nik Reiminan gepostet haben, ist ein guter Anfang, aber er stürzt entweder ab oder funktioniert nicht auf Android 2.3.

Bitte beachten Sie meine Antwort (Louis Semprini) in dieser Stackoverflow -Frage für einen besseren Kommentar und einen raffinierten Hack, der auf 2.1, 2.2 und 2.3 funktioniert (und das sollte keinen Schaden für 3.x anrichten, obwohl wir dies niemals garantieren können):

Wie ändere ich die Hintergrundfarbe des Optionsmenü?

Hier finden Sie auch viele andere Ressourcen, die Sie für diese Frage möglicherweise hilfreich finden:

Ändern Sie die Hintergrundfarbe des Android -Menüs

Android: Das Menü der Anwendung anpassen (z. B. Hintergrundfarbe)

http://www.macadamian.com/blog/post/android_-_theming_the_unthemable/

Androidmenuitem -Schaltfläche umschalten

Ist es möglich, das Menü des Android-Options nicht übertransplantend zu gestalten?

http://www.codeprroject.com/kb/android/androidmenusmyway.aspx

Stellen Sie den Menühintergrund fest, um undurchsichtig zu sein

Verwenden Sie den SetMenubackground in OnCreate.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top