Spinner 展开后,默认选中的条目字体变色
时间: 2024-02-29 20:10:14 浏览: 78
你可以通过自定义Spinner的Adapter来实现Spinner展开后默认选中的条目字体变色的效果。具体实现步骤如下:
1. 自定义Spinner的Adapter,并在getView方法中设置选中条目的字体颜色。
```
public class MySpinnerAdapter extends ArrayAdapter<String> {
private int selectedPosition;
public MySpinnerAdapter(Context context, List<String> objects) {
super(context, android.R.layout.simple_spinner_item, objects);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
if (position == selectedPosition) {
// 设置选中条目的字体颜色为红色
((TextView) view).setTextColor(Color.RED);
}
return view;
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
View view = super.getDropDownView(position, convertView, parent);
if (position == selectedPosition) {
// 设置选中条目的字体颜色为红色
((TextView) view).setTextColor(Color.RED);
} else {
// 设置未选中条目的字体颜色为黑色
((TextView) view).setTextColor(Color.BLACK);
}
return view;
}
public void setSelectedPosition(int position) {
selectedPosition = position;
}
}
```
2. 在Spinner的OnItemSelectedListener中获取选中条目的位置,并调用Adapter的setSelectedPosition方法更新选中条目的位置。
```
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// 调用Adapter的setSelectedPosition方法更新选中条目的位置
((MySpinnerAdapter) parent.getAdapter()).setSelectedPosition(position);
// 刷新Spinner的显示
parent.invalidate();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// do nothing
}
});
```
在这个示例中,当用户选择了Spinner中的某个条目时,通过设置该条目的字体颜色为红色来实现选中条目字体变色的效果。同时,通过调用Adapter的setSelectedPosition方法和刷新Spinner的显示来更新选中条目的位置。注意,在Adapter的getDropDownView方法中需要同时设置选中条目和未选中条目的字体颜色,以保证展开后的所有条目都能正确显示。
阅读全文