Android EditText设置输入类型(输入类型.类型\类别\编号);don';行不通

Android EditText设置输入类型(输入类型.类型\类别\编号);don';行不通,android,keyboard,android-edittext,numeric,Android,Keyboard,Android Edittext,Numeric,我正在尝试使用“创建一个只接收数字的编辑文本”(仅在数字键盘上显示)。在Nexus7上,这不会发生:X 这是我的代码: EditText edit = new EditText(context); edit.setText(value); edit.setTextSize(16); edit.setTextColor(getResources().getColor(R.color.blue)); edit.setInputType(InputType.TY

我正在尝试使用“创建一个只接收数字的编辑文本”(仅在数字键盘上显示)。在Nexus7上,这不会发生: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) {
        }
    });
你能帮我吗

编辑:

我正在将此编辑文本添加到线性布局中,如下所示:

    myLinearLayout.addView(edit);

试着使用android的java等价物:inputType

这不是numeric的功能。Numeric是对键盘的提示,提示它应该显示numberpad。它不会强制键盘执行此操作,也不会阻止显示或输入其他键(如+、-、#、*等)。如果你想阻止输入某些字符,你必须在应用程序端这样做。如果要这样做,需要在编辑字段上设置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}); 
InputFilter过滤器=新的InputFilter(){
公共CharSequence筛选器(CharSequence源、int开始、int结束、,
跨越目的地,起始点,终止点){
对于(inti=start;i
试试这个,它会帮你的

换,而不是这一行

edit.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
变化如下

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

可能正在重新绘制EditText,请尝试通过xml设置输入类型。不确定这是否会解决问题,但值得一试。此外,这将显示数字键和隐藏字母键,但符号键仍将被放大。。我要用它;)我只想要数字:)