这个问题已经在这里有一个答案:
- 如何使一个Android使其具有初始文本“选择一个”? 36个回答
我有一个Spinner
在spinnerMode="dropdown"
模式。 取而代之的是预选的第一个项目,我想向用户显示一个提示,所以不存在默认选择(如»请选择一个项目«)
这是我得到的用户界面:
这就是我想才达到的用户界面:
我想通了EditText
小部件有一个android:hint
属性,但不是Spinner
部件和设置它不给我带来我想要的UI。 这是一个Android 4.x的唯一,应用程序,所以我没有任何预先4.0兼容的东西的麻烦。
我还没有使用自定义的适配器和一个自定义的物品类别中找到一个简单而干净的解决方案还没有,只有这种解决方法:
首先,我们需要对微调项内容的类:
class SpinnerItem {
private final String text;
private final boolean isHint;
public SpinnerItem(String strItem, boolean flag) {
this.isHint = flag;
this.text = strItem;
}
public String getItemString() {
return text;
}
public boolean isHint() {
return isHint;
}
}
那么,我们的适配器类:
class MySpinnerAdapter extends ArrayAdapter<SpinnerItem> {
public MySpinnerAdapter(Context context, int resource, List<SpinnerItem> objects) {
super(context, resource, objects);
}
@Override
public int getCount() {
return super.getCount() - 1; // This makes the trick: do not show last item
}
@Override
public SpinnerItem getItem(int position) {
return super.getItem(position);
}
@Override
public long getItemId(int position) {
return super.getItemId(position);
}
}
最后,我们使用的解决办法是这样的:
ArrayList<SpinnerItem> items = new ArrayList<SpinnerItem>();
items.add(new SpinnerItem("Item 1", false));
items.add(new SpinnerItem("Item 2", false));
items.add(new SpinnerItem("HINT", true)); // Last item
MySpinnerAdapter adapter = new MySpinnerAdapter(this, android.R.layout.simple_spinner_item, items);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setSelection(items.size() - 1);
然后你可以使用该标志从SpinnerItem类设置文本颜色为项目或什么的。