定制微调的项目背景颜色(Customizing spinner's item backgro

2019-10-16 15:42发布

我想提出一个应用程序来计算电阻值超出其颜色波段。 一切工作正常的纯粹的编程方面。 目前对于selcting颜色带我使用的填充颜色列表中的微调。

我真的想使它看起来更好。 我希望能够设置在微调其相应的颜色每个项目的背景色:

我应该怎么做才能实现这一目标? 这里是我的代码部分:

用于微调阵:

  <string-array name="FourBandResistorFullColor">
    <item>Black</item>
    <item>Brown</item>
    <item>Red</item>
    <item>Orange</item>
    <item>Yellow</item>
    <item>Green</item>
    <item>Blue</item>
    <item>Violet</item>
    <item>Gray</item>
    <item>White</item>    
  </string-array>

在适配器代码OnCreate方法:

    var bandOne = FindViewById<Spinner>(Resource.Id.bandOneColor);
    var bandOneAdapter = ArrayAdapter.CreateFromResource(this, Resource.Array.FourBandResistorFullColor,
                                                         Android.Resource.Layout.SimpleSpinnerItem);
    bandOneAdapter.SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropDownItem);
    bandOne.Adapter = bandOneAdapter;
    bandOne.ItemSelected += BandOne_ItemSelected;

Answer 1:

您需要使用自定义适配器。 我猜你是使用ArrayAdapter? 如果是这样,你能做到这一点,如下所示:

    private class MyArrayAdapter extends ArrayAdapter<String>{

        public MyArrayAdapter(Context context, int textViewResourceId) {
            super(context, textViewResourceId); 
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View view = super.getView(position, convertView, parent);
            int color = getColorFromName(getItem(position));
            view.setBackgroundColor(color);
            return view;
        }   
    }

需要注意的是getColorFromName是你需要实现自己的功能。 它从字符串映射到一个int颜色值(ARGB)。 红色为〔实施例是为0xffff0000。



文章来源: Customizing spinner's item background color