在XML中更改Spinner的下拉箭头的颜色

Fra*_*ero 48 android colors android-layout android-spinner android-color

正如我在我的问题中写的那样,我想改变Spinner XML格式的下拉箭头(默认箭头,不是自定义箭头或类似的东西)的颜色,但问题是我找不到任何东西要做从中引用它XML.

可能吗?如果是,我该如何改变颜色?

提前致谢.

Hus*_*eky 117

有三种方法可以实现这一目标.

1.通过代码:

在你的xml中,确保你的微调器有一个id.假设我们有一个id为"spinner"的微调器.

在您的代码中,在onCreate()中添加以下内容:

Spinner spinner = (Spinner) findViewById(R.id.spinner);
spinner.getBackground().setColorFilter(getResources().getColor(R.color.red), PorterDuff.Mode.SRC_ATOP);
Run Code Online (Sandbox Code Playgroud)

其中red是values文件夹中colors.xml中定义的颜色.

2.通过xml:

对于API 21+:

<Spinner
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:backgroundTint="@color/red" />
Run Code Online (Sandbox Code Playgroud)

或者如果您使用支持库,您可以使用:

<android.support.v7.widget.AppCompatSpinner
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:backgroundTint="@color/red" />
Run Code Online (Sandbox Code Playgroud)

3.通过drawables:

您可以使用此在线工具:http://android-holo-colors.com

这将使用您喜欢的颜色为您想要的任何视图生成自定义drawable.确保选择微调器,然后下载资源.


mew*_*ewa 13

我很惊讶没有人指出它,但你可以只是子类Widget.AppCompat.Spinner和改变backgroundTint

<style name="Spinner" parent="Widget.AppCompat.Spinner">
        <item name="backgroundTint">@color/spinnerTint</item>
</style>
Run Code Online (Sandbox Code Playgroud)

并将其应用于 Spinner

<Spinner
    style="@style/Spinner"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:spinnerMode="dropdown" />
Run Code Online (Sandbox Code Playgroud)

  • backgroundTint属性不仅适用于API级别21吗? (2认同)
  • @niranjan_b`android:backgroundTint`是.这是AppCompat版本(注意这里没有android前缀,样式扩展了AppCompat派生的样式) (2认同)

Meh*_*aji 12

使用backgroundTint属性

<Spinner
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:backgroundTint="@color/white"
        />
Run Code Online (Sandbox Code Playgroud)

如果min_SDK <21(Lollipop)你应该使用AppCompatSpinner

<android.support.v7.widget.AppCompatSpinner
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:backgroundTint="@color/white"
        /> 
Run Code Online (Sandbox Code Playgroud)


Mah*_*man 6

如果 API 21+){

您可以android:backgroundTint="@color/color"在 Spinner 中直接使用:

<Spinner
   android:id="@+id/spinner"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:backgroundTint="@color/color" />
Run Code Online (Sandbox Code Playgroud)

} 其他{

创建自己的风格:

<style name="spinner_style" parent="Widget.AppCompat.Spinner">
        <item name="backgroundTint">@color/color</item>
</style>
Run Code Online (Sandbox Code Playgroud)

然后进入微调器:

<Spinner
   android:id="@+id/spinner"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   style="@style/spinner_style"/> 
Run Code Online (Sandbox Code Playgroud)

}

注意:您可以在所有 API 中使用 style 方法。


Shw*_*han 5

<Spinner
            android:id="@+id/spinner"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:backgroundTint="#00000" />
Run Code Online (Sandbox Code Playgroud)

仅适用于 API 级别 21 以上

  • 这是迄今为止最好的答案。我想说无论如何我们现在都在使用 21+。另请注意,您可以使用“?attr/color”或类似内容使其适合暗模式。(请注意,您的颜色中只有 5 个零。) (2认同)