22

我想将微调器下拉颜色设置为白色,同时将主题中的其他元素保持为默认颜色。情况如下:

工具栏和微调器

<android.support.v7.widget.Toolbar
        android:layout_height="@dimen/action_bar_height"
        android:layout_width="match_parent"
        android:minHeight="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:theme="@style/ToolbarTheme.Base"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light">

        <Spinner
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"/>

</android.support.v7.widget.Toolbar>

风格是:

<!-- My base app theme -->
<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryDark">@color/primary_dark</item>
    <item name="colorAccent">@color/theme_tint</item>

    <!-- <item name="colorControlNormal">#FFFFFF</item> -->

    <item name="android:windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
    <item name="android:typeface">sans</item>
    <item name="android:windowBackground">@color/background_primary</item>
</style>

<!-- My Toolbar theme -->
<style name="ToolbarTheme.Base" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
    <item name="colorControlNormal">#FFFFFF</item>
</style>

如果我要放入<item name="colorControlNormal">#FFFFFF</item>App 主题(上面已注释掉),那么微调器下拉菜单将变为白色,但复选框也会变为白色。那么我怎样才能让微调器只变白呢?

4

2 回答 2

21

最后,我找到了如何将箭头颜色更改Spinner为白色的解决方案。

1) 在styles.xml中,添加以下样式:

<style name="ActionBarThemeOverlay" parent="">
    <item name="android:textColorPrimary">#ffffff</item>
    <item name="colorControlNormal">#ffffff</item>
    <item name="colorControlHighlight">#ff33b5e5</item>
</style>

<style name="Widget.MyTheme.HeaderBar.Spinner" parent="Widget.AppCompat.Light.Spinner.DropDown.ActionBar">
    <item name="android:theme">@style/ActionBarThemeOverlay</item>
</style>

2)在布局中,您使用Spinner(在您的情况下使用Toolbar),将样式添加到您的微调器:

<Spinner
    xmlns:android="http://schemas.android.com/apk/res/android"
         android:id="@+id/my_spinner"
         style="@style/Widget.MyTheme.HeaderBar.Spinner"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content" />
于 2015-01-03T11:01:37.840 回答
16

只是偶然发现了这个问题。即使前段时间有人问过,我只是想留下一个应该有效的答案:

工具栏 *.xml

<android.support.v7.widget.Toolbar
    <!-- leave the theme stuff out of here -->
    style="@style/MyToolbarStyle"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

风格/主题

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- your other attributes -->
    <!-- following is used to tint the checkbox - purple for demo purpose -->
    <item name="colorControlNormal">#2196F3</item>
</style>

<style name="MyToolbarStyle">
    <item name="android:minHeight">?actionBarSize</item>
    <item name="android:background">?colorPrimary</item>
    <item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>
    <item name="theme">@style/MyToolbarTheme</item>
</style>

<style name="MyToolbarTheme">
    <!-- Used to tint the back arrow, menu and spinner arrow -->
    <item name="colorControlNormal">#FFF</item>
</style>

结果

微调器和复选框具有不同颜色的解决方案

注意:出于演示目的,我将复选框设为紫色

于 2015-04-09T11:11:26.977 回答