我正在制作一个应用程序来计算其色带中的电阻值。在纯编程方面一切正常。在选择色带时我正在使用一个充满颜色列表的微调器。
我真的想让它看起来更好。我希望能够将微调器中每个项目的背景颜色设置为相应的颜色:
我应该怎样做才能实现这个目标?这是我的代码的一部分:
用于微调器的数组:
<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;
答案 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。