问题描述
- 如何改变下拉列表中字体的颜色
-
关于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);
解决方案
在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
代替。这就是为什么它会拦截下拉列表创建的视图,然后变成想要的颜色。
屏幕截图:
解决方案二:
自己写一个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);
解决方案三:
简单的一个方法:
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) {
}
};
时间: 2024-10-03 14:16:34