android:每个项目的微调器颜色不同

Jon*_*han 2 android text colors spinner

我有一个微调器,我希望每个项目的文本都是不同的颜色.例如,在item0上,文本应该是红色,item1文本应该是蓝色,而item2文本应该是绿色.我尝试将我想要更改的项目设置为textView并更改textview的颜色,但它不起作用.关于如何完成这项任务的任何想法?

              Spinner spinner = (Spinner) findViewById(R.id.spinner1);

              ArrayList<String> array = new ArrayList<String>();
              array.add("item0");
    array.add("item1");
    array.add("item2");

              ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this,R.layout.row, array);
              spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

               spinner.setAdapter(spinnerArrayAdapter)

              try{
    TextView tv = new TextView((Context) spinner.getItemAtPosition(0));
    tv.setTextColor(Color.argb(0, 255, 0, 0));  
    }catch(Exception e){
    Toast.makeText(getApplicationContext(), "Error: " + e.toString(), Toast.LENGTH_LONG);
        }
Run Code Online (Sandbox Code Playgroud)

jkh*_*uw1 5

创建自己的类,扩展BaseAdapter并实现SpinnerAdapter.

覆盖getDropDownView,在处理位置时,您可以从自动扩展的自定义布局中格式化textview.

@Override
public View getDropDownView(int position, View convertView, ViewGroup parent){

    View v = convertView;

    if (v == null) {
        LayoutInflater vi = (LayoutInflater) mContext
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        v = vi.inflate(R.layout.your_custom_layout, null);
    }
    TextView tv=(TextView) v.findViewById(R.id.yourTextViewFromYourLayout);
    tv.setText(yourArrayList.getItem(position));
    switch (position) {
case 0:
 //set tv's color here...
 break;
case 1:
 //set tv's color here...
etc...
default:
 //set default color or whatever...
}       
        return v;
    }
Run Code Online (Sandbox Code Playgroud)