Я боролся с стилем PopupMenu, и после многих исследований процесс создания пользовательского стиля PopupMenu для моей темы казался довольно прямолинейным. Например, ответ на this question выглядит как простой способ изменить цвет фона PopupMenu. Однако ни один из этих решений не работал для моего проекта. Поэтому я начал копаться в источниках стиля, чтобы узнать, что я должен наследовать, чтобы стиль PopupMenu в моем собственном проекте.Пользовательские стили PopupMenu игнорируются
Я бегу моих тестов на телефоне под управлением API 19, и моя базовая тема выглядит следующим образом:
<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>
Это решение, что большинство принятых ответов здесь показать. Но это не стиль моего PopupMenu. Поэтому я врывался в источники, чтобы найти геномную тему моей темы и посмотреть, какие настройки по умолчанию используются. Это то, что я нашел:
<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"/>
А потом в Base.V7.Theme.AppCompat.Light
я нашел эти настройки:
<!-- 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>
Так, насколько я могу сказать, моя тема наследует от Theme.AppCompat.Light.DarkActionBar
который использует по умолчанию PopupMenu стиль @style/Widget.AppCompat.Light.PopupMenu
. Затем я наследую этот стиль, чтобы установить собственные настройки PopupMenu. Я убедился, что моя активность и мое приложение используют правильную тему. Я не уверен, почему еще это не сработает. Я также пробовал эти настройки:
<item name="android:textAppearanceLargePopupMenu">@style/CustomPopupMenuLarge</item>
<item name="android:textAppearanceSmallPopupMenu">@style/CustomPopupMenuSmall</item>
<item name="android:popupWindowStyle">@style/CustomPopupMenuListWindow</item>
Я предоставил пользовательские стили для каждого из них, и никто из них не работал. Что может быть переоценкой всех моих пользовательских стилей? Любая помощь будет оценена, потому что я в тупике.
редактирует
Вот мой манифест ...
<?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>
Вот AppTheme.NoActionBar
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
вы настройки темы в манифесте? – Sree
@Sree - Да, как указано в вопросе. – NoChinDeluxe
Можем ли мы увидеть код (вы, вероятно, делаете это правильно, но только для того, чтобы убедиться) – Sree