如何更改Spinner字体颜色?

我遇到了Droid X手机的问题,用户说旋转器中的字体颜色变成白色,除非用户突出显示项目,否则它将不可见。 没有其他手机似乎有这个问题。 我打算尝试将字体强制为黑色以查看是否有帮助。 我怎样才能做到这一点?

这就是我目前填充微调器的方式。 似乎simple_spinner_item在Droid X上被打破了。

 String spin_arry[] = new String[str_vec.size()]; str_vec.copyInto(spin_arry); ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_spinner_item, spin_arry); 

Solutions Collecting From Web of "如何更改Spinner字体颜色?"

我将使用Android SDK中的Spinner项目示例来获取下一个代码示例。


代码

首先,您需要创建自定义适配器,它将拦截下拉列表中的视图创建:

 static class CustomArrayAdapter extends ArrayAdapter { public CustomArrayAdapter(Context ctx, T [] objects) { super(ctx, android.R.layout.simple_spinner_item, objects); } //other constructors @Override public View getDropDownView(int position, View convertView, ViewGroup parent) { View view = super.getView(position, convertView, parent); //we know that simple_spinner_item has android.R.id.text1 TextView: /* if(isDroidX) {*/ TextView text = (TextView)view.findViewById(android.R.id.text1); text.setTextColor(Color.RED);//choose your color :) /*}*/ return view; } } 

然后在代码中创建适配器,如下所示:

  String [] spin_arry = getResources().getStringArray(R.array.Planets); this.mAdapter = new CustomArrayAdapter(this, spin_arry); 

说明:

因为CustomArrayAdapter知道我们使用android的内置布局资源,所以它也知道文本将放在带有id android.R.id.text1 TextView 。 这就是为什么它可以截取下拉列表中的视图创建并将文本颜色更改为所需的任何颜色。


截图:

在此处输入图像描述

简单而脆弱……

 private OnItemSelectedListener OnCatSpinnerCL = new AdapterView.OnItemSelectedListener() { public void onItemSelected(AdapterView< ?> parent, View view, int pos, long id) { ((TextView) parent.getChildAt(0)).setTextColor(Color.BLUE); ((TextView) parent.getChildAt(0)).setTextSize(5); } public void onNothingSelected(AdapterView< ?> parent) { } }; 

写一个R.layout.simplespinneritem:

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

ID是android:id="@android:id/text1" ,设置字体和背景的颜色。

 ArrayAdapter adapter = new ArrayAdapter(this,packagename.R.layout.simple_spinner_item, spin_arry); 
 public class ee extends Activity{ protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.ww); addListenerOnSpinnerItemSelection(); } public void addListenerOnSpinnerItemSelection(){ ArrayList array = new ArrayList(); array.add("item0"); Spinner spinner1; ArrayAdapter mAdapter; spinner1= (Spinner) findViewById(R.id.spinner2); spinner1= new ArrayAdapter(this, R.layout.spinner_item, array); spinner1.setAdapter(mAdapter); } } 

并在xml res / layout中添加新的xml文件:type layout,spinner

(在spinner_item.xml中)

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

要添加到sasad的回复,请在项目中制作该文件的副本(可在Android文件夹中find),更改该文件中TextView的文本颜色,并在初始化Adapter而不是android时使用该布局。

制作自己的布局xml文件,并为黑色文本提供android:textColor =“#000”

这是更合适的方式,

首先在系统中find“simple_spinner_item.xml”文件,按照以下路径,C:\ Users [用户名] \ AppData \ Local \ Android \ sdk \ platforms [android-23] \ data \ res \ layout

现在复制“simple_spinner_item.xml”文件的内容

其次,在项目res \ layout文件夹中创建custom_spinner.xml文件

并将复制的内容粘贴到最近创建的文件中

这是样本:

水库\布局\ custom_spinner.xml

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

这是设置的适配器代码:

 Spinner ddlArea = (Spinner) findViewById(R.id.ddlArea); ddlArea.setAdapter(new ArrayAdapter(this, R.layout.custom_spinner, areaList)); 

其中areaList是List

谢谢,Ejaz Waquif