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