2017-01-31 4 views
0

Ich habe eine Aktivität mit dem folgenden Thema: Theme.AppCompat.Light.DarkActionBar. Als Ergebnis sind die ActionBar Titel und der „mehr“ Optionen Menüpunkt alle wissen, wie ich erwarten würde:Ändern Sie Aktion Spinner Thema

enter image description here

Aber, wie Sie aus dem Screenshot sehen können, die Drop-down Menü hat einen schwarzen Hintergrund. Ich möchte, dass das Dropdown-Menü einen grauen Hintergrund hat (siehe Screenshot unten).

ich bemerkt habe, dass der Stil der Drop-Down-Menü auf den allgemeinen Stil der Aktivität in Beziehung steht, zum Beispiel, wenn die Aktivität der Art geändert wird: Theme.AppCompat.Light, dann wird es jetzt wie folgt aussehen:

enter image description here

Das ist genau die Art von Stil, die ich suche, aber wie Sie vielleicht bemerkt haben, sind die Actionbar Titel und die "mehr" Optionen jetzt schwarz, was angesichts der Art des Themas sinnvoll ist, ist aber nicht mehr was ich brauchen.

Nun, ich weiß, es gibt eine Reihe von Möglichkeiten, um mit dieser Situation umzugehen: der erste wäre, die Navigationsmodus-Liste überhaupt nicht zu verwenden, weil es bereits veraltet ist, ein anderer würde eine Toolbar verwenden und eine haben Spinner drin, beide styled. Aber bevor ich diesen Weg gehe, möchte ich sicherstellen, dass es vielleicht einen einfacheren Ansatz gibt.

Ich versuchte, ein eigenes Thema zu haben, die von den Theme.AppCompat.Light erweitert:

<style name="LightTheme" parent="Theme.AppCompat.Light" /> 

und dann verwenden sie einen thematischen Kontext zu schaffen, wenn die Dropdown-Menü Aufpumpen:

Context context = new ContextThemeWrapper(this, R.style.LightTheme); 
CustomAdapter adapter = new CustomAdapter(context); 

ActionBar actionBar = getSupportActionBar(); 
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); 
actionBar.setListNavigationCallbacks(adapter, null); 

aber leider hatte keine Wirkung.

Also, gibt es eine Möglichkeit, den Stil des Dropdown-Menüs zu ändern, ohne andere Komponenten zu beeinflussen, zB: die Actionbar?

Antwort

1

Sie können immer die Eigenschaften der Symbolleiste innerhalb Ihrer style.xml Ihrer Anwendung gestalten. Ich würde empfehlen, einen Stil ohne Aktionsbalken zu verwenden, in dem Sie den Spinner in Ihrer Symbolleiste stylen können, aber da Sie ihn nicht verwenden, können Sie ihn direkt in Ihrem Design verwenden.

Für Spinner Stil können Sie dies in Ihrem Haupt-App Thema hinzufügen oder spezifisch:

<item name="android:spinnerStyle">@style/Theme.AppCompat.Light</item> <item name="spinnerStyle">@style/Theme.AppCompat.Light</item>

Für Pop-up-Stil:

<item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>

+0

Perfect! Vielen Dank. –