Ich habe mit PopupMenu Styling gekämpft, und nach viel Forschung, der Prozess der Erstellung eines benutzerdefinierten PopupMenu Stil für mein Thema schien ziemlich geradlinig. Zum Beispiel scheint die Antwort auf this question wie eine einfache Möglichkeit, die Hintergrundfarbe eines PopupMenu zu ändern. Keine dieser Lösungen hat jedoch für mein Projekt funktioniert. Also fing ich an, in die Stilquellen zu graben, um herauszufinden, was ich eigentlich erben sollte, um das PopupMenu in meinem eigenen Projekt zu stylen.Benutzerdefinierte PopupMenu Stile werden ignoriert
Ich bin mit meinen Tests auf einem Mobilteil API läuft 19 und meine Basis Thema sieht wie folgt aus:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- ... -->
<item name="android:popupMenuStyle">@style/CustomPopupMenu</item>
</style>
<style name="CustomPopupMenu" parent="@style/Widget.AppCompat.Light.PopupMenu">
<item name="android:popupBackground">@color/retina_burning_hot_pink</item>
</style>
Dies ist die Lösung, die hier die meisten der akzeptierten Antworten zeigen. Aber das style mein PopupMenu nicht. Also habe ich mich in die Quellen vertieft, um die Genetik meines Themas zu finden und zu sehen, welche Standardeinstellungen verwendet werden. Dies ist, was ich gefunden habe:
<style name="Theme.AppCompat.Light.DarkActionBar" parent="Base.Theme.AppCompat.Light.DarkActionBar"/>
<style name="Base.Theme.AppCompat.Light.DarkActionBar" parent="Base.Theme.AppCompat.Light">
<style name="Base.Theme.AppCompat.Light" parent="Base.V7.Theme.AppCompat.Light"/>
Und dann in Base.V7.Theme.AppCompat.Light
fand ich diese Standardeinstellungen:
<!-- Popup Menu styles -->
<item name="popupMenuStyle">@style/Widget.AppCompat.Light.PopupMenu</item>
<item name="textAppearanceLargePopupMenu">@style/TextAppearance.AppCompat.Light.Widget.PopupMenu.Large</item>
<item name="textAppearanceSmallPopupMenu">@style/TextAppearance.AppCompat.Light.Widget.PopupMenu.Small</item>
<item name="listPopupWindowStyle">@style/Widget.AppCompat.ListPopupWindow</item>
<item name="dropDownListViewStyle">?android:attr/dropDownListViewStyle</item>
So soweit ich das beurteilen kann, mein Thema von Theme.AppCompat.Light.DarkActionBar
erbt, die einen Standard-PopupMenu Stil verwendet von @style/Widget.AppCompat.Light.PopupMenu
. Ich erben dann diesen Stil, um meine eigenen PopupMenu-Einstellungen festzulegen. Ich habe sichergestellt, dass meine Aktivität und meine Anwendung das richtige Thema verwenden. Ich bin mir nicht sicher, warum das sonst nicht funktioniert. Ich habe auch diese Einstellungen versucht:
Ich habe benutzerdefinierte Stile für jede, und keiner von ihnen arbeitete. Was könnte alle meine benutzerdefinierten Stile überschreiben? Jede Hilfe würde geschätzt werden, weil ich ratlos bin.
EDITS
Hier ist mein Manifest ...
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.blah.blah">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".Activities.MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Hier ist AppTheme.NoActionBar
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
werden Sie das Thema im Manifest Einstellung? – Sree
@Sree - Ja, wie in der Frage angegeben. – NoChinDeluxe
Können wir den Code sehen (Sie tun es wahrscheinlich richtig, aber nur um sicher zu gehen) – Sree