有没有简单的方法来改变Android中的Spinner下拉颜色?

时间:2017-10-17 07:55:11

标签: android android-layout android-spinner android-theme

enter image description here

我创建了我的主题以与应用程序一起使用,主题的父级是Theme.AppCompat.Light.NoActionBar

顺便说一句,我想要白色背景和黑色文字。

这是适配器代码

     val adapter = ArrayAdapter.createFromResource(activity,
                R.array.email_type_array, android.R.layout.simple_spinner_item)

     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
     child.spinner.adapter = adapter

有没有简单的方法可以在Android中更改Spinner下拉颜色?

6 个答案:

答案 0 :(得分:6)

是肯定的。您可以在xml

中使用以下属性for spinner
android:popupBackground="YOUR_HEX_COLOR_CODE"

更改textcolor等为您的微调器项目创建自定义XML文件。

<强> spin_item.xml:

然后提供您想要的颜色和尺寸:

<?xml version="1.0" encoding="utf-8"?>

<TextView  
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"
    android:textSize="24sp"
    android:textColor="#000000"         
    android:padding="4dp"
    />

然后像这样使用它:

val adapter = ArrayAdapter.createFromResource(activity,
                R.array.email_type_array, android.R.layout.simple_spinner_item)
adapter.setDropDownViewResource(R.layout.spin_item)

答案 1 :(得分:1)

通过代码

bundle install --pre

或通过XML

对于API 21 +:

gem update rails

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

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

Please check the answer here

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

创建一个类似于此

的新布局文件
MY REQUIRED COLOR

在我说android:id的地方,请将其设置为您想要的颜色。

另外请确保您不要更改val adapter = ArrayAdapter.createFromResource(activity, R.array.email_type_array, .R.layout.custom_ simple_spinner_item) 属性,因为arrayadapter将使用此属性将文本设置为textview

然后在创建期间将其设置为arrayadapter,如此

var ArryString = [];
var data = ["Abc", "Xyz,Hji,Lol", "Uyi,Mno"];
var index=0;
for (var k in data){
var a=data[k].split(",");
ArryString[index]=a[0].charAt(0);
if(a.length > 1)
    for (var l=1 ;l<a.length ; l++)
        ArryString[index]+=","+a[l].charAt(0);
index++;
}

console.log(ArryString);

答案 4 :(得分:0)

location_Survey_Spin = findViewById(R.id.location_Survey_Spinner);         location_Survey_Spin.getBackground()。setColorFilter(getResources()。getColor(R.color.black),PorterDuff.Mode.SRC_ATOP); //它将更改微调框下拉菜单的颜色

答案 5 :(得分:0)

要更改下拉背景颜色,请在XML文件中为android:popupBackground="@color/aColor"小部件使用Spinner

<Spinner
    android:id="@+id/my_spinner"
    android:layout_width="100dp"
    android:layout_height="match_parent"
    android:popupBackground="@color/aColor" />

styles.xml文件上使用浅色主题播放时,旋转下拉菜单图标颜色将为黑色,但是请注意,如果您使用的是<item name="android:textColorSecondary">@color/aColor</item>,则下拉图标将会选择那种颜色:

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:textColorSecondary">@color/aColor</item>

即使您的问题是要更改下拉菜单背景颜色,我来这里也是因为我一直想了解为什么我的 spinner下拉菜单图标颜色一直使用不同的颜色,直到我发现(android:textColorSecondary)-因此希望也能帮助其他人。