EditText setInputType(InputType.TYPE_CLASS_NUMBER);不工作

时间:2014-07-08 09:03:18

标签: android keyboard android-edittext numeric

我尝试使用create one editText只接收数字(只显示数字键盘)。在nexus 7上没有发生:X

这是我的代码:

    EditText edit = new EditText(context);
    edit.setText(value);
    edit.setTextSize(16);
    edit.setTextColor(getResources().getColor(R.color.blue));
    edit.setInputType(InputType.TYPE_CLASS_NUMBER
            | InputType.TYPE_NUMBER_FLAG_DECIMAL);
    edit.addTextChangedListener(new TextWatcher() {

        @Override
        public void afterTextChanged(Editable s) {
            elem.setValue(s.toString());
        }

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

        @Override
        public void onTextChanged(CharSequence s, int start, int before,
                int count) {
        }
    });

你能帮助我吗?

编辑:

我将此EditText添加到LinearLayout中,如下所示:

    myLinearLayout.addView(edit);

3 个答案:

答案 0 :(得分:8)

试试这会对你有所帮助

更改,而不是此行

edit.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);

如下所示改变

edit.setRawInputType(InputType.TYPE_CLASS_NUMBER |InputType.TYPE_NUMBER_FLAG_DECIMAL);

答案 1 :(得分:1)

尝试使用 TextView.setRawInputType(),java的等效android:inputType

答案 2 :(得分:1)

这不是数字的作用。数字是键盘的提示,它应该显示一个数字键盘。它不会强制键盘执行此操作,也不会阻止显示或输入其他键(如+, - ,#,*等)。如果您想阻止输入某些字符,则必须执行该应用程序。如果你想这样做,你需要在编辑字段上设置一个InputFilter。

以下是一些代码:

InputFilter filter = new InputFilter() { 
        public CharSequence filter(CharSequence source, int start, int end, 
Spanned dest, int dstart, int dend) { 
                for (int i = start; i < end; i++) { 
                        if (!Character.isDigit(source.charAt(i))) { 
                                return ""; 
                        } 
                } 
                return null; 
        } 
}; 
edit.setFilters(new InputFilter[]{filter});