How can I add a hint to the Spinner widget?
本问题已经有最佳答案,请猛点这里访问。
我在
这是我得到的用户界面:
这是我要实现的UI:
我发现
我还没有找到一种简单易用的解决方案,只有使用自定义适配器和自定义项类的解决方法:
首先,我们需要一个用于微调项内容的类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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; } } |
然后是我们的适配器类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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); } } |
最后,我们使用以下解决方法:
1 2 3 4 5 6 7 8 9 | 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类中的标志来设置该项目或其他内容的文本颜色。