Android支持库奇怪的主题行为

时间:2014-04-03 20:32:17

标签: android android-layout android-theme android-popupwindow

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

Black popup menu background White text color on alert dialog

顺便说一下,继承我的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>

任何想法都错了吗?我只想让弹出菜单再次使用默认的灯光主题,并让警告对话框使用黑色的前景色。

2 个答案:

答案 0 :(得分:1)

为什么你认为这是错的?

Theme.Light中的PopupWindow背景很暗:

<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>

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

答案 1 :(得分:0)

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