我一直在努力与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