1

カラーバンドから抵抗値を計算するアプリを作成しています。純粋なプログラミング側では、すべてが正常に機能します。現時点では、色のバンドを選択するために、色のリストで満たされたスピナーを使用しています。

どうしても見栄えを良くしたい。スピナーの各アイテムの背景色を対応する色に設定できるようにしたい:

ここに画像の説明を入力

これを達成するにはどうすればよいですか?ここに私のコードの一部があります:

スピナーに使用される配列:

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

1 に答える 1

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 になります。

于 2012-04-29T18:26:00.103 に答える