在AppTheme中设置了带ColorBackground的AppCompat Spinner样式背景?

时间:2015-10-17 14:54:58

标签: android colors background spinner material-design

我有一个主题应用的BaseActivity,我已经将属性colorBackground定义为我的应用程序的默认背景颜色(比如棕色)。

   <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
            <item name="android:colorBackground">@color/app_background</item>
        </style>

这样做,它是否为在该活动中加载的片段之一中的微调器提供与我的应用程序背景(棕色)相同的颜色背景。 像这样: Problem

但我希望样式默认为白色背景,而不是colorBackground。

为了实现这一点,我为Spinner创建了一个样式 如

 <style name="AppSpinner" parent="Widget.AppCompat.Spinner">
        <item name="android:popupBackground">#ffffff</item>
    </style>

我将这种风格应用为

     <Spinner
                            style="@style/AppSpinner
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            />

这给了我下拉弹出窗口的白色背景,但周围是一个奇怪的黑色背景。 像这样: tried solution

我也在AppSpinner中尝试了其他属性 android:background和android:colorBackground也是,但结果相同。

为什么?我怎么能改变这一点。 或者是否有其他方法可以达到预期的效果。

1 个答案:

答案 0 :(得分:0)

我也遇到了这个问题并且解决了这个问题:

1。制作两个版本的app app主题

第二个必须继承第一个并设置colorBackground属性(未在第一个版本中设置)。像这样:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- some theme attributes, for example accent color, etc. -->
</style>

<style name="AppTheme.WithBackground">
    <item name="android:colorBackground">@color/app_background</item>
</style>

2。使用带背景的版本作为活动主题

<activity
    android:name=".MainActivity"
    android:theme="@style/AppTheme.WithBackground" ... >

3。在spinner视图中使用不带背景的版本作为主题

<Spinner
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme" />

这对我来说非常有效,即使没有透支警告。