我如何能提示添加到微调窗口小部件? [重复](How can I add a hint to t

2019-07-05 07:37发布

这个问题已经在这里有一个答案:

  • 如何使一个Android使其具有初始文本“选择一个”? 36个回答

我有一个SpinnerspinnerMode="dropdown"模式。 取而代之的是预选的第一个项目,我想向用户显示一个提示,所以不存在默认选择(如»请选择一个项目«)

这是我得到的用户界面:

这就是我想才达到的用户界面:

我想通了EditText小部件有一个android:hint属性,但不是Spinner部件和设置它不给我带来我想要的UI。 这是一个Android 4.x的唯一,应用程序,所以我没有任何预先4.0兼容的东西的麻烦。

Answer 1:

我还没有使用自定义的适配器和一个自定义的物品类别中找到一个简单而干净的解决方案还没有,只有这种解决方法:

首先,我们需要对微调项内容的类:

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类设置文本颜色为项目或什么的。



文章来源: How can I add a hint to the Spinner widget? [duplicate]