Android Spinner每行的背景不同

Deb*_*ali 4 java arrays android colors spinner

我知道这个话题已被多次解决,我发现了几个这样的问题,但我不能满足我的需要.我想要一个颜色列表spinner.我这样做了,但我的旋转器是空的.

在我的OnCreate():

spinner = (Spinner) findViewById(R.id.spinner1); 
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
    this, R.array.androidcolors, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(
    android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter); 
Run Code Online (Sandbox Code Playgroud)

在文件夹值中,我创建了一个文件colors.xml:

<resources>

<item name="blue" type="color">#FF33B5E5</item>
<item name="purple" type="color">#FFAA66CC</item>
<item name="green" type="color">#FF99CC00</item>
<item name="orange" type="color">#FFFFBB33</item>
<item name="red" type="color">#FFFF4444</item>
<item name="darkblue" type="color">#FF0099CC</item>
<item name="darkpurple" type="color">#FF9933CC</item>
<item name="darkgreen" type="color">#FF669900</item>
<item name="darkorange" type="color">#FFFF8800</item>
<item name="darkred" type="color">#FFCC0000</item>

<integer-array name="androidcolors">
    <item>@color/blue</item>
    <item>@color/purple</item>
    <item>@color/green</item>
    <item>@color/orange</item>
    <item>@color/red</item>
    <item>@color/darkblue</item>
    <item>@color/darkpurple</item>
    <item>@color/darkgreen</item>
    <item>@color/darkorange</item>
    <item>@color/darkred</item>
</integer-array>

</resources> 
Run Code Online (Sandbox Code Playgroud)

Akh*_*ain 13

这很简单,你必须这样做

1.为微调器编写自己的自定义适配器,这是你如何做到的

class SpinnerAdapter extends BaseAdapter
{
    ArrayList<Integer> colors;
    Context context;

    public SpinnerAdapter(Context context) 
    {
        this.context=context;
        colors=new ArrayList<Integer>();
        int retrieve []=context.getResources().getIntArray(R.array.androidColors);
        for(int re:retrieve)
        {
            colors.add(re);
        }
    }
    @Override
    public int getCount() 
    {
        return colors.size();
    }
    @Override
    public Object getItem(int arg0) 
    {
            return colors.get(arg0);
    }
    @Override
    public long getItemId(int arg0) 
    {
        return arg0;
    }
    @Override
    public View getView(int pos, View view, ViewGroup parent) 
    {
        LayoutInflater inflater=LayoutInflater.from(context);
        view=inflater.inflate(android.R.layout.simple_spinner_dropdown_item, null);
        TextView txv=(TextView)view.findViewById(android.R.id.text1);
        txv.setBackgroundColor(colors.get(pos));
        txv.setTextSize(20f);
        txv.setText("Text  "+pos);
        return view;
    }

}
Run Code Online (Sandbox Code Playgroud)

2.像这样设置适配器

spnColors=(Spinner)findViewById(R.id.spnColor);
spnColors.setAdapter(new SpinnerAdapter(this));
Run Code Online (Sandbox Code Playgroud)

最终结果是

颜色旋转器

请接受答案,如果有帮助!