我想将Spinner下拉项目的文本颜色更改为黑色.
我有一个自定义Spinner,列出了不同的语言.它有一个ImageView
和一个TextView
.微调器显示在带有白色文本的蓝色背景上,看起来很好.
问题是当它被点击时,下拉显示但文本几乎看不到,因为下拉的浅灰色和文本的白色.
这是Spinner的代码activity_main.xml
:
这是spinner_row_layout.xml
:
这里文本颜色设置为白色,因为当没有选择任何内容时我需要它是白色的.
这是以下代码styles.xml
:
有没有人有任何建议怎么做?
编辑:在评论和答案的帮助下,我设法做到了.我认为它可以用XML完成...无论如何在java代码背后,这就是我所做的:
定义自定义适配器后,我们需要覆盖getDropDownView
方法,该方法在单击微调器并显示下拉列表时触发.该getView
方法也应该被覆盖,因此我们可以在Spinner
未单击时处理默认颜色.换句话说,这是代码:
public class CustomSpinnerAdapter extends ArrayAdapter{ public CustomSpinnerAdapter(Context context, int textViewResourceId, String[] objects, TypedArray image){ super(context, textViewResourceId, objects); } @Override public View getDropDownView(int position, View convertView, ViewGroup parent){ LayoutInflater inflater = getLayoutInflater(); View row = inflater.inflate(R.layout.spinner_row_layout, parent, false); TextView label = (TextView) row.findViewById(R.id.language); label.setText(languages_list[position]); label.setTextColor(getResources().getColor(android.R.color.black)); ImageView icon = (ImageView) row.findViewById(R.id.icon); icon.setImageDrawable(icons_list.getDrawable(position)); return row; } @Override public View getView(int position, View convertView, ViewGroup parent){ LayoutInflater inflater = getLayoutInflater(); View row = inflater.inflate(R.layout.spinner_row_layout, parent, false); TextView textView = (TextView) row.findViewById(R.id.language); textView.setText(languages_list[position]); textView.setTextColor(getResources().getColor(android.R.color.white)); ImageView icon = (ImageView) row.findViewById(R.id.icon); icon.setImageDrawable(icons_list.getDrawable(position)); return row; } }
请注意,TextView
in 的颜色getDropDownView
设置为黑色,而在getView
其中设置为白色.
我做过那样的事,但是在 BaseAdapter
public View getDropDownView(int position, View convertView, ViewGroup parent) { View view = convertView; if (view == null) { view = inflater.inflate(R.layout.spinner_item, null); } TextView txtTestText = (TextView) view.findViewById(R.id.txtSpinnerRowText); txtTestText.setText(list.get(position).getText()); if (getSelectedPosition() == position) { txtTestText.setTextColor(context.getResources().getColor(android.R.color.holo_blue_dark)); } else { txtTestText.setTextColor(context.getResources().getColor(android.R.color.primary_text_light)); } return view; }