Frage

Was ist der Weg (wenn es eine Art und Weise), um das Menü anpassen (die man durch die Menütaste des Telefons ausgelöst). Ich bin vor allem in zwei Dingen interessiert:

  • die Hintergrundfarbe von dem Standardhellgrau in ein dunkleren Grau ändert
  • , wie die Menüpunkte ausgerichtet sind. Ich habe 4 Elemente und sie werden automatisch 2x2 ausgerichtet ist, aber ich würde sie lieber alles in einer Zeile haben (1x4)
War es hilfreich?

Lösung

Nicht mit dem integrierten Menürahmen.

Sie sind herzlich eingeladen zu Intercept die MENU-Taste (über onKeyDown() oder etwas) und machen, was Sie wollen, aber denken Sie daran, dass die Nutzer sein wird erwartet, dass es wie der Rest aussehen der Menüs tun auf ihrem Gerät.

Andere Tipps

Ich habe meine eigene Menü-Klasse. Es ist vielleicht nicht genau, was Sie wollen, aber es sollte hoffentlich Sie loslegen. Hier ist der Artikel I veröffentlicht und ein herunterladbare Link zum Quellcode.

http://www.codeproject.com/KB/android/AndroidMenusMyWay.aspx

Sie können auch einfach implementieren, um die „onCreateOptionsMenu“ Methode, die in der Regel verwendet wird, um das Standardmenü angezeigt, und die Anzeige, was Sie in diesem Fall mögen.

In meinem Spiel setzte ich es ein „Spiel pausiert“ Dialogfeld angezeigt wird, wenn die Menü-Taste gedrückt wird ...

Verwenden Sie Stile. Dies funktioniert für mich auf Android 5.0

<style name="AppTheme" parent="android:Theme.Material.Light">
    <item name="android:colorPrimary">@color/primary</item>
    <item name="android:actionOverflowMenuStyle">@style/PopupMenu.MyStyle</item>
</style>

<style name="PopupMenu.MyStyle" parent="android:Widget.PopupMenu">
    <item name="android:popupBackground">@drawable/actionbar_item_background</item>
</style>

... dann die ziehbar ist ein regelmäßiger Wähler

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/primary"/>
    <item android:drawable="@color/highlighted" android:state_pressed="true"/>
</selector>

Hintergrund Menü Farbe in style.xml in Ihrem Thema

<item name="android:panelFullBackground">@android:color/darker_gray</item>

diese Antwort funktioniert, aber für mich stürzt ab, wenn ActionBarSherlock verwenden. Hier ist eine Hacky Abhilfe dieser Arbeit nontheless zu machen.

    // Black Vodoo! Do not try this at home.

    final LayoutInflater li = getLayoutInflater();

    final Class<LayoutInflater> clazz = LayoutInflater.class;

    try {
        final Field fieldSet = clazz.getDeclaredField("mFactorySet");
        fieldSet.setAccessible(true);
        fieldSet.setBoolean(li, false);

        li.setFactory(new Factory() {

            @Override
            public View onCreateView(final String name,
                    final Context context, final AttributeSet attrs) {
                if (name.equalsIgnoreCase("com.android.internal.view.menu.IconMenuItemView")) {
                    try {
                        final LayoutInflater f = getLayoutInflater();
                        final View view = f.createView(name, null, attrs);
                        new Handler().post(new Runnable() {
                            @Override
                            public void run() {
                                // Set the text color
                                ((TextView) view).setTextColor(Color.WHITE);
                            }
                        });
                        return view;
                    } catch (final Exception e) {
                    }
                }
                return null;
            }
        });
    } catch (final Exception e) {
        e.printStackTrace();
    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top