我必须更改微调器第一个元素的颜色,该元素显示为默认元素。尝试了各种不起作用的方法。提供有效的解决方案。
我经过一些修改后检查了this解决方案,这个答案将帮助你改变第一个spinner
的项目。
在onCreate中,将常用方法称为setSpinnerValue
:
ArrayList<String> testarray = new ArrayList<String>();
testarray.add("item0");
testarray.add("item1");
testarray.add("item2");
testarray.add("item3");
setSpinnerValue(testarray,timeSpinner,arrayAdapter);
在这里,我创建了使用arrayList
,spinner
和arrayAdapter
作为参数的公共方法,用于在adapter
中设置微调器项目。
public void setSpinnerValue(final ArrayList<String> list, Spinner spinner, ArrayAdapter<String> adapter)
{
try {
adapter = new ArrayAdapter<String>(TimePicker_Activity.this, android.R.layout.simple_spinner_item, list) {
@Override
public boolean isEnabled(int position) {
String val = String.valueOf(list.get(position));
boolean isFalse = val.contains(":False");
return !isFalse;
}
@Override
public boolean areAllItemsEnabled() {
return false;
}
@Override
public View getDropDownView(int position, View convertView, android.view.ViewGroup parent) {
View v = convertView;
if (v == null) {
Context mContext = this.getContext();
LayoutInflater vi = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(android.R.layout.simple_spinner_dropdown_item, null);
}
TextView tv = (TextView) v.findViewById(android.R.id.text1);
String val = String.valueOf(list.get(position));
tv.setText(val.replace(":False", ""));
switch (position) {
case 0:
tv.setTextColor(android.graphics.Color.GRAY);
break;
default:
tv.setTextColor(getResources().getColor(R.color.colorPrimary));
break;
}
return v;
}
};
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setSelection(0, false);
spinner.setAdapter(adapter);
} catch (Exception e) {
e.printStackTrace();
}
}
获得如下输出,