您需要覆盖适配器中的 getView() 方法并将布局参数设置到 textview 以包装内容。微调器将自动调整所选项目的大小。
我创建了一个从 ArrayAdapter 扩展的自定义适配器:
public class CustomAdapter extends ArrayAdapter<String> {
之后我重写了改变当前视图的 LayoutParams 的 getView() 方法:
@Override
public View getView(final int position, final View convertView, final ViewGroup parent) {
View view = convertView;
if (null == view) {
view = LayoutInflater.from(this.getContext())
.inflate(android.R.layout.simple_list_item1, null);
((TextView) view).setText(getItem(position));
}
final LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
view.setLayoutParams(params);
return view;
}
在您的活动中,创建适配器实例并使用它设置您的微调器:
List<String> stringList = new ArrayList<String>();
stringList.add("test1");
stringList.add("test12");
stringList.add("test123");
stringList.add("test1234");
final SpinnerAdapter adapter = new CustomAdapter(this.getContext(),
android.R.layout.simple_list_item1,
android.R.id.text1,
stringList);
mySpinner.setAdapter(adapter);
当您在列表中选择某些内容时,微调器将重新创建视图,将所选项目重新排序到第一个位置,并将其自身调整为内容的大小。