2017-07-27 71 views
0

在我的主要的應用程序的主題,我有:彈出菜單文本顏色不工作,背景顏色做工精細

<item name="android:popupMenuStyle">@style/MyApp.PopupMenu</item> 
    <item name="android:textAppearanceLargePopupMenu">@style/MyTextAppearanceLargePopupMenu 
    </item> 
    <item name="android:textAppearanceSmallPopupMenu">@style/MyTextAppearanceSmallPopupMenu 
    </item> 

然後,我有

<style name="MyApp.PopupMenu" parent="Base.Widget.AppCompat.PopupMenu"> 
    <item name="android:popupBackground">@color/white</item> 
    <item name="android:textColorPrimary">@color/black</item> 
    <item name="android:textColorSecondary">@color/black</item> 
    <item name="android:textColor">@color/black</item> 
    <item name="android:background">@color/color_white</item> 
    <item name="overlapAnchor">true</item> 
    <item name="android:overlapAnchor">true</item> 
    <item name="android:textAppearanceLargePopupMenu">@style/MyTextAppearanceLargePopupMenu 
    </item> 
    <item name="android:textAppearanceSmallPopupMenu">@style/MyTextAppearanceSmallPopupMenu 
    </item> 
</style> 

<style name="MyTextAppearanceLargePopupMenu" parent="TextAppearance.AppCompat.Widget.PopupMenu.Large"> 
    <item name="android:textColor">@color/black</item> 
</style> 

<style name="MyTextAppearanceSmallPopupMenu" parent="TextAppearance.AppCompat.Widget.PopupMenu.Small"> 
    <item name="android:textColor">@color/black</item> 
</style> 

但我的彈出式菜單中會出現一個白色背景和白色字母而不是黑色。我已經通過改變背景測試了這個,並且工作正常。

那麼我做錯了什麼?

謝謝。

編輯:想通了,我的應用程序主題有<item name="android:textColor">@color/primary_text</item>,這似乎無視我在彈出菜單樣式上做的任何事情。

+0

參見[這](https://stackoverflow.com/a/34233329/1512199) – santalu

+0

我可以改變背景好,這是我無法改變的文字顏色。 – casolorz

回答

0

下面是一個例子:

<resources> 

<!-- Base application theme. --> 
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <!-- Customize your theme here. --> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 
    <item name="popupMenuStyle">@style/PopupStyle</item> 
    <item name="textAppearanceLargePopupMenu">@style/PopupTextAppearanceLarge</item> 
    <item name="textAppearanceSmallPopupMenu">@style/PopupTextAppearanceSmall</item> 
</style> 

<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar"> 
    <item name="android:textColorPrimary">@android:color/white</item> 
</style> 

<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light"> 
    <item name="android:colorBackground">#ff00ff</item> 
</style> 

<style name="PopupStyle" parent="Widget.AppCompat.Light.PopupMenu"> 
    <item name="android:popupBackground">#ff00ff</item> 
</style> 

<style name="PopupTextAppearanceLarge" parent="TextAppearance.AppCompat.Light.Widget.PopupMenu.Large"> 
    <item name="android:textColor">#ffff00</item> 
</style> 

<style name="PopupTextAppearanceSmall" parent="TextAppearance.AppCompat.Light.Widget.PopupMenu.Small"> 
    <item name="android:textColor">#ffff00</item> 
</style> 

</resources> 

工具欄例如:

<android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="?attr/colorPrimary" 
     android:theme="@style/AppTheme.AppBarOverlay" 
     app:popupTheme="@style/AppTheme.PopupOverlay"/> 
+0

這個例子不適用於我,它甚至不改變背景顏色。爲了讓背景顏色起作用,我必須在'popupMenuStyle'前加'android:'。 – casolorz

+0

有趣的是,你使用AppCompat主題的權利? – santalu

+0

'