2016-04-21 87 views
1

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

你要爲主題的清單? – Sree

+0

@Sree - 是的,正如問題所述。 – NoChinDeluxe

+0

我們可以看到代碼(您可能正確地做了,但只是爲了確保) – Sree

回答

0

我認爲你需要定義一個父爲AppCompat.NoActionBar。嘗試parent="Theme.AppCompat.Light.NoActionBar"並添加<item name="android:popupMenuStyle">@style/CustomPopupMenu</item>

+0

我已經試過這個,它沒有區別。我嘗試將'AppTheme'作爲父項,現在我只是嘗試了一下你的建議,它改變了某些顏色的東西,但PopupMenu保持不變。 – NoChinDeluxe

+0

嗯..應該工作。我可以看到您對我的建議所做的更改嗎 – Sree

+0

我只是按照您的建議改變了它。我在頂部添加了'