自定义微调器的项目背景颜色

时间:2012-04-29 18:15:29

标签: android android-layout xamarin.android

我正在制作一个应用程序来计算其色带中的电阻值。在纯编程方面一切正常。在选择色带时我正在使用一个充满颜色列表的微调器。

我真的想让它看起来更好。我希望能够将微调器中每个项目的背景颜色设置为相应的颜色:

enter image description here

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

用于微调器的数组:

  <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;

1 个答案:

答案 0 :(得分:2)

您需要使用自定义适配器。我猜你使用的是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是您需要自己实现的功能。它从String映射到int颜色值(ARGB)。例如,红色为0xffff0000。

相关问题