数字键符号单击时未键入

时间:2018-08-16 13:15:28

标签: android

我已经创建了一个基于表单的应用程序。我创建了一种EditText,用于以编程方式键入数字数据的形式。我已经成功打开了数字键盘。但是当我单击数字键盘中的任何符号时,例如。,+等,它们不会在EditText中键入。这是我的示例代码,

 edtValue=new EditText(SuperUserAddStudentActivity.this);
                                edtValue.setBackground(ContextCompat.getDrawable(SuperUserAddStudentActivity.this, R.drawable.edt_parameter_background));
                            edtValue.setSelected(false);
                            edtValue.setPadding(EditTextPaddingLeft,EdittextPaddingTop,EditTextPaddingRight,EditTextPaddingBottom);


                            // TODO: 16/8/18 change here
                            final RelativeLayout.LayoutParams edtValueLayoutParams=new RelativeLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, iParameterEditTextHeight);

                            edtValueLayoutParams.setMargins(0,ParameterMarginTop,0,0);
//                            edtValueLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
                            edtValue.setLayoutParams(edtValueLayoutParams);
                            edtValue.setInputType(InputType.TYPE_CLASS_NUMBER);
                            edtValue.setHint(p.getName());
                            edtValue.addTextChangedListener(new TextWatcher() {
                                @Override
                                public void beforeTextChanged(CharSequence s, int start, int count, int after) {

                                }

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

                                    p.setEnteredValueByUser(s.toString());
                                }

                                @Override
                                public void afterTextChanged(Editable s) {

                                }
                            });
                        }
                        //add it to same layout

                        llTempHolder.addView(tvParameterLabel);
                        if(edtValue!=null)
                        {
                            llTempHolder.addView(edtValue);
                        }

在这方面请帮助我。我不知道为什么会这样。

2 个答案:

答案 0 :(得分:0)

我想问题是您的TextChangedListener。您有3个在更改文本时会调用的函数,但是没有一个函数会更改edtValue的文本值。

在onTextChanged中的

尝试类似: edtValue.setText(s.toString());

我不确定自己,但是我没有足够的声誉来发表评论

答案 1 :(得分:0)

在更改代码后
                            edtValue.setInputType(InputType.TYPE_CLASS_NUMBER);  到edtValue.setRawInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);   它起作用了。