2 nana4ever nana4ever 于 2012.12.03 13:25 提问

如何改变下拉列表中字体的颜色

关于Droid X的手机,用户反应说,在下拉列表中字体颜色变成白色,所以字体看不见,除非用户突出显示这一项。其他的手机没有出现这个问题。我要把字体强制的变成黑色来看看能否解决问题。我该怎么做呢?
这是我目前填充下拉列表的方法。看似simple_spinner_item在Droid X's中出错了。

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);

3个回答

csh_34
csh_34   2012.12.03 17:37
已采纳

在Android SDK使用Spinner工程案例:
首先,你要创建自定义的适配器,拦截下拉列表创建的视图:

static class CustomArrayAdapter<T> extends ArrayAdapter<T>
{
    public CustomArrayAdapter(Context ctx, T [] objects)
    {
        super(ctx, android.R.layout.simple_spinner_item, objects);
    }

    //其它构造函数

    @Override
    public View getDropDownView(int position, View convertView, ViewGroup parent)
    {
        View view = super.getView(position, convertView, parent);

        // simple_spinner_item 有 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<CharSequence>(this, spin_arry);

因为CustomArrayAdapter知道我使用android内置布局资源,也知道TextView视图中的文本会被使用idandroid.R.id.text1代替。这就是为什么它会拦截下拉列表创建的视图,然后变成想要的颜色。
屏幕截图:
enter image description here

fandyvon
fandyvon   Rxr 2012.12.03 13:32

自己写一个R.layout.simple_spinner_item:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1"
    android:singleLine="true"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

注意id必须是android:id="@android:id/text1",在设置字体或背景的颜色。
这样试一下。

ArrayAdapter adapter =
  new ArrayAdapter(this,packagename.R.layout.simple_spinner_item, spin_arry);
yongyong_21
yongyong_21   2012.12.06 10:13

简单的一个方法:

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) {
  }
};
Csdn user default icon
上传中...
上传图片
插入图片