9

ArrayAdapter を使用してプログラムでスピナーを作成しようとしています。これは、Android ライブラリ プロジェクトの一部としてクローズド ソース jar で行われており、リソースへのアクセス権がありません。

スピナーを表示するレイアウトとテキストビューをカスタマイズする方法を知りたいです。

--EDIT--
現在、次のコードを使用しています

ArrayAdapter<T> spinnerData = new ArrayAdapter<T>(this, Android.R.layout.simple_spinner_item, T[]);

spinner.setAdapter(spinnerData);

何が起こっているのかというと、フォント、色、その他のサイズを制御できないということです。スピナーをクリックして何かを選択すると、すべてのオプションが非常に小さなテキストで表示されます。画面上でのレンダリング方法を変更できるようにしたい。

4

1 に答える 1

16

カスタム ArrayAdapter を作成し、アダプターの getDropDownView メソッドでスピナー テキストビューがどのように見えるかを定義するだけです。

public class CustomizedSpinnerAdapter extends ArrayAdapter<String> {

 private Activity context;
 String[] data = null;

 public CustomizedSpinnerAdapter(Activity context, int resource, String[] data2)
 {
     super(context, resource, data2);
     this.context = context;
     this.data = data2;
 }
  ...

 @Override
 public View getDropDownView(int position, View convertView, ViewGroup parent)
 {   
     View row = convertView;
     if(row == null)
     {
         //inflate your customlayout for the textview
         LayoutInflater inflater = context.getLayoutInflater();
         row = inflater.inflate(R.layout.spinner_layout, parent, false);
     }
     //put the data in it
     String item = data[position];
     if(item != null)
     {   
        TextView text1 = (TextView) row.findViewById(R.id.rowText);
        text1.setTextColor(Color.WHITE);
        text1.setText(item);
     }

     return row;
 }
...
}

このアダプターをスピナーにセットします

Spinner mySpinner = (Spinner) findViewById(R.id.mySpinner);
final String[] data = getResources().getStringArray(
            R.array.data);
final ArrayAdapter<String> adapter1 = new CustomizedSpinnerAdapter(
            AddSlaveActivity.this, android.R.layout.simple_spinner_item,
            data);
mySpinner.setAdapter(adapter1); 
于 2012-10-26T12:59:50.673 に答える