Sie können natürlich die PopupMenu in Ihrer eigenen Art und Weise anpassen. Es ist ganz einfach. Aber zuerst müssen Sie sich um eine sehr wichtige Sache kümmern.
Die PopupMenu wird wie folgt erstellt,
PopupMenu popupMenu = new PopupMenu(context, anchorView);
Nun ist der „Kontext“ hier spielt eine sehr wichtige Rolle bei dem Styling. Der Stil des PopupMenu hängt vom Stil des von Ihnen übergebenen Kontexts ab. Sei also sehr vorsichtig dabei. Ich verschwendete fast eine halbe Stunde damit, das herauszufinden.
Wenn Sie in einem Fragment sind, übergeben Sie einfach "getActivity()" und Sie sind fertig.
Styling der PopupMenu Artikel
einfach die folgenden Artikel im Stil außer Kraft setzen,
<item name="textAppearanceLargePopupMenu">@style/myPopupMenuTextAppearanceLarge</item>
<item name="android:textAppearanceLargePopupMenu">@style/myPopupMenuTextAppearanceLarge</item>
<item name="textAppearanceSmallPopupMenu">@style/myPopupMenuTextAppearanceSmall</item>
<item name="android:textAppearanceSmallPopupMenu">@style/myPopupMenuTextAppearanceSmall</item>
Und den Text Aussehen anpassen, wie Sie wollen
<style name="myPopupMenuTextAppearanceSmall" parent="@style/TextAppearance.AppCompat.Light.Widget.PopupMenu.Small">
<item name="android:textColor">@color/text_hint_color</item>
</style>
<style name="myPopupMenuTextAppearanceLarge" parent="@style/TextAppearance.AppCompat.Light.Widget.PopupMenu.Large">
<item name="android:textColor">@color/text_hint_color</item>
</style>
Wenn Sie möchten, Um den Hintergrund des PopupMenu zu ändern, tun Sie dies
<item name="popupMenuStyle">@style/myPopupMenuStyle</item>
<item name="android:popupMenuStyle">@style/myPopupMenuStyle</item>
Erweiterte Styling
Die PopupMenu Elemente unterstützen nicht die Symbole standardmäßig zeigt. Aber das Zeigen der Symbole kann es so viel besser aussehen lassen. Ich empfehle es zu versuchen.
dies den folgenden Code in Ihrer Tätigkeit setzen und Sie sind nur zu implementieren gut zu gehen,
@Override
public boolean onMenuOpened(int featureId, Menu menu) {
if (featureId == Window.FEATURE_ACTION_BAR && menu != null) {
if (menu.getClass().getSimpleName().equals("MenuBuilder")) {
try {
Method m = menu.getClass().getDeclaredMethod(
"setOptionalIconsVisible", Boolean.TYPE);
m.setAccessible(true);
m.invoke(menu, true);
} catch (NoSuchMethodException e) {
Log.e("tag", "onMenuOpened", e);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
return super.onMenuOpened(featureId, menu);
}
Hoffe, es hilft.
Definieren Sie Ihre Stile in AppTheme, statt AppBaseTheme. AppBaseTheme hat standardmäßig eigene Implementierungen für die API-Stufen 11 und 14, die Ihre Stile neu definiert haben. – Ganster41
möglich duplicate von [Wie PopupMenu stylen?] (Http://stackoverflow.com/questions/12636101/how-to-style-popupmenu) –
@ArtjomB. Einige Überschneidungen, aber keine Duplikate, da sich diese Frage speziell auf AppCompat-Popups bezieht. –