[英]Is it possible to give every spinner item a different color
In an alertdialog I have a spinner with color codes:在警报对话框中,我有一个带有颜色代码的微调器:
Spinner cSpinner = (Spinner)mView.findViewById(R.id.spinner_c);
ArrayAdapter<String> cadapter = new ArrayAdapter<String>(Cal_main.this, android.R.layout.simple_spinner_item, getResources().getStringArray(R.array.colorspin));
cadapter.setDropDownViewResource(R.layout.custom_spinner_items);
cSpinner.setAdapter(cadapter);
The color array:颜色数组:
<string-array name="colorspin">
<item>#f44336</item>
<item>#d32f2f</item>
<item>#e91e63</item>
<item>#c2185b</item>
<item>#9c27b0</item>
</string-array>
If it is possible, what is the best way to set the background of each item to the array colors?如果可能,将每个项目的背景设置为数组 colors 的最佳方法是什么?
Yes, it is.是的。
the array and spinner:数组和微调器:
String[] colors = getResources().getStringArray(R.array.colorspin);
//Getting the instance of Spinner and applying OnItemSelectedListener on it
Spinner spin = (Spinner) mView.findViewById(R.id.spinner_c);
SpinnerColorAdapter spincAdapter = new SpinnerColorAdapter(getApplicationContext(),colors);
spin.setAdapter(spincAdapter);
spin.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
//Performing action onItemSelected and onNothing selected
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int position,long id) {
String color = colors[position].toString();
tvStep.setText(color);
Toast.makeText(getApplicationContext(), color, Toast.LENGTH_LONG).show();
}
The SpinnerColorAdapter: SpinnerColorAdapter:
public class SpinnerColorAdapter extends BaseAdapter {
Context context;
String[] Colors;
LayoutInflater inflter;
public SpinnerColorAdapter(Context applicationContext, String[] Colors) {
this.context = applicationContext;
this.Colors = Colors;
inflter = (LayoutInflater.from(applicationContext));
}
//@Override
public int getCount() {
return Colors.length;
}
//@Override
public Object getItem(int i) {
return null;
}
//@Override
public long getItemId(int i) {
return 0;
}
//@Override
public View getView(int i, View view, ViewGroup viewGroup) {
view = inflter.inflate(R.layout.spinner_row, null);
Button colorbtn = (Button) view.findViewById(R.id.btn_indexcolor);
colorbtn.setBackgroundColor(Color.parseColor(Colors[i]));
TextView colorview = (TextView) view.findViewById(R.id.indexcolor);
return view;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.