Android编程:以编程方式创建Spinner和ArrayAdapter

9
我正在尝试使用ArrayAdapter来以编程方式创建Spinner。这是作为Android库项目的一部分在一个闭源jar中完成的,我没有任何资源访问权限。
我想知道如何自定义布局和显示Spinner的文本视图。
--编辑-- 目前我正在使用以下代码
ArrayAdapter<T> spinnerData = new ArrayAdapter<T>(this, Android.R.layout.simple_spinner_item, T[]);

spinner.setAdapter(spinnerData);

发生的情况是我无法控制字体大小、颜色或其他任何内容。当我点击旋转器以选择某些内容时,所有选项都显示在非常小的文本中。我希望能够改变它在屏幕上的呈现方式。


1
你能否再清楚一些吗? - Kalpesh Lakhani
1个回答

16

只需创建自定义的ArrayAdapter,并在适配器的getDropDownView方法中定义spinner文本视图的外观即可。

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

谢谢。有没有我可以使用的“好看”的默认值? - kapad
1
你可以从Android文件夹中的/platforms/android-13/data/res/drawable-hdpi中获取任何内容,以进行检查。 - user936414
我无法使用资源,因为显示旋转器的活动位于 Android 库项目中的封闭源 jar 中。在 android.R 类中是否有任何视图/布局可供使用? - kapad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接