[英]How to generate a spinner in Android with different background color in each item with Java?
我想在 Java 中生成一个用于颜色选择的微调器,下拉时它应该是这样的:
我的 Java 代码现在看起来像这样:
final Spinner spinner = new Spinner(context);
String[] colors = new String[]{"[1]", "[2]", "[3]", "[4]", "[5]", "[6]"};
final List<String> colorsList = new ArrayList<>(Arrays.asList(colors));
final ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(context, android.R.layout.simple_spinner_item, colorsList) {
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
View view = super.getDropDownView(position, convertView, parent);
TextView tv = (TextView) super.getDropDownView(position, convertView, parent);
Color color = Color.rgb(18,18,218);
switch(position){
case 0:
color = Color.rgb(28,158,218);
break;
case 1:
color = Color.rgb(218,58,218);
break;
case 2:
color = Color.rgb(128,18,28);
break;
}
return view;
}
};
但是现在没有显示颜色,全是白色。 什么是更好的方法呢?
而不是TextView
将BackgroundColor
设置为view
。 除此之外,如果要为所选视图着色,则还必须覆盖getView
。 检查以下:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
return getCustomView(position, convertView, parent);
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
return getCustomView(position, convertView, parent);
}
private View getCustomView(int position, View convertView, ViewGroup parent) {
View view = super.getDropDownView(position, convertView, parent);
if (position % 2 == 1) {
view.setBackgroundColor(Color.parseColor("#FFC3C0AA"));
}
else {
view.setBackgroundColor(Color.parseColor("#FFB5DCE8"));
}
return view;
}
输出:
我是这样做的:
int itemColor[] = new int[]{Color.rgb(188,108,218),
Color.rgb(88,18,218),
Color.rgb(18,108,28),
Color.rgb(18,108,118),
Color.rgb(218,88,218),
Color.rgb(138,108,118)};
...
final Spinner spinner = new Spinner(context);
String[] colors = new String[]{"[1]", "[2]", "[3]", "[4]", "[5]", "[6]"};
final List<String> colorsList = new ArrayList<>(Arrays.asList(colors));
final ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(context, android.R.layout.simple_spinner_item, colorsList)
{
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent)
{
View view = super.getDropDownView(position, convertView, parent);
TextView tv = (TextView) super.getDropDownView(position, convertView, parent);
view.setBackgroundColor(itemColor[position]);
return view;
}
};
spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
spinner.setAdapter(spinnerArrayAdapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
{
((TextView) parent.getChildAt(0)).setBackgroundColor(itemColor[position]);
}
@Override
public void onNothingSelected(AdapterView<?> parent)
{
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.