EditText的任何内置过滤选项?

时间:2011-05-18 13:32:36

标签: android android-edittext android-3.0-honeycomb

是否可以将过滤器(我不确定这个名称)附加到EditTexts,这样如果用户以错误的方式键入某些内容,那么EditText上会弹出某种类型的警告?

例如:表单上有一个EditText,必须填写。因此,在它为空之前,会显示一些警告,表明它是表单上的必填字段。

我在Android上的EditTexts上看到过类似的行为,所以我猜这里有一个内置功能,但我找不到它。请问有人帮帮我吗?

目标Android版本为3.0及以上。

3 个答案:

答案 0 :(得分:1)

在xml中查看android:inputType的{​​{1}}属性。例如EditText和其他内容 但是为了检查空虚,除了android:inputType="textEmailAddress|number|phone"之外,我不能提出任何建议。

答案 1 :(得分:1)

您可能需要添加TextWatcher并在public void afterTextChanged(Editable s)的实施中做出相应的反应。只需检查s是否为空,或者是否正确。

您也可以实施filters,但这些通常会阻止用户输入错误的数据。

答案 2 :(得分:1)

您可以使用带有文本观察器事件的代码添加过滤器。当您在编辑文本上键入任何想法时,文本观察者事件就会执行,那么如果条件为假,我们可以检查编辑文本中的类型文本,然后您应该显示弹出窗口。我正在显示一个示例,在文本观察器事件的帮助下使用编辑文本在列表视图中进行过滤,您应该在edittext中进行过滤。

ed.addTextChangedListener(new TextWatcher(){

        public void afterTextChanged(Editable s) {
        }

        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
        }

        public void onTextChanged(CharSequence s, int start, int before,
                int count) {
            fillMaps.clear();
            textlength = ed.getText().length();
            for (int i = 0; i < countryName.length; i++) {
                if (textlength <= countryName[i].length()) {
                    if (ed.getText()
                            .toString()
                            .equalsIgnoreCase(
                                    (String) countryName[i].subSequence(0,
                                            textlength))) {
                        HashMap<String, String> map = new HashMap<String, String>();
                        map.put("flag", "" + imageId[i]);
                        map.put("country", countryName[i].toString());
                        map.put("capital", capitalName[i].toString());
                        map.put("countrytime",
                                convertDateTimeToGMT(
                                        GMTplusMinusInMillisecond[i],
                                        plusMinus[i]));
                        map.put("GMT", GMTplusMinus[i].toString());

                        fillMaps.add(map);
                    }
                }
            }
            SimpleAdapter adapter = new SimpleAdapter(
                    WorldClockActivity.this, fillMaps, R.layout.grid_item,
                    from, to);
            lv1.setAdapter(adapter);
            // lv1.setAdapter(new
            // ArrayAdapter<String>(WorldClockActivity.this,android.R.layout.simple_list_item_1
            // , arr_sort));

        }
    });