0

从昨晚开始,我期待我的应用程序主题出现这种奇怪的行为:弹出菜单显示为黑色背景,AlertDialogs 显示为白色文本。

黑色弹出菜单背景 警报对话框上的白色文本颜色

顺便说一下,这是我的styles.xml:

<resources xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="CustomActionBarTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="android:actionBarStyle" tools:ignore="NewApi">@style/MyActionBar</item>

        <item name="actionBarStyle">@style/MyActionBar</item>
    </style>

    <style name="MyActionBar"
        parent="Widget.AppCompat.Light.ActionBar.Solid.Inverse">
        <item name="android:background">@drawable/action_bar_background</item>

        <!-- Support library compatibility -->
        <item name="background">@drawable/action_bar_background</item>
    </style>

</resources>

知道有什么问题吗?我只想让弹出菜单再次使用默认的浅色主题,并让警报对话框使用黑色前景色。

4

2 回答 2

1

为什么你认为这是错误的?

PopupWindow 背景是暗的Theme.Light

<style name="Widget.PopupWindow">
    <item name="android:popupBackground">@android:drawable/editbox_dropdown_background_dark</item>
    <item name="android:popupAnimationStyle">@android:style/Animation.PopupWindow</item>
</style>

如果你想改变它 - 你需要为你的主题覆盖弹出窗口样式:

<style name="CustomActionBarTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:actionBarStyle" tools:ignore="NewApi">@style/MyActionBar</item>
    <item name="android:popupWindowStyle">@style/YourCustomStyle</item>
    <item name="actionBarStyle">@style/MyActionBar</item>
</style>

<style name="YourCustomStyle" parent="@android:style/Widget.PopupWindow">
    <item name="android:popupBackground">@drawable/your_background</item> 
</style>

以相同的方式自定义警报对话框

于 2014-04-03T20:55:31.377 回答
0

好的,我解决了问题。我将应用程序上下文传递给弹出菜单和 alertdialog 构建器的构造函数。这似乎会导致应用程序主题出现问题。我只是改为getApplicationContext()并且getActivity()它起作用了。

于 2014-04-04T13:18:58.033 回答