web-dev-qa-db-ja.com

AndroidサポートツールバーcolorControlNormal color

テーマの他の要素をデフォルトの色に保ちながら、スピナーのドロップダウンカラーを白に設定したいと思います。ここに状況があります:

Toolbar and spinner

<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>アプリテーマ(上記でコメントアウト)の場合、スピナーのドロップダウンは白になりますが、チェックボックスも白になります。では、どうすればスピナーだけを白にすることができますか?

20
James Cross

最後に、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" />
17
Yuriy Yunikov

この質問に遭遇しました。少し前に尋ねられましたが、うまくいくはずの答えを残したかっただけです。

ツールバー* .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>

結果

solution with different colors for spinner and checkbox

注:デモのためにチェックボックスを紫にしています

13
reVerse