我已经创建了一个基于表单的应用程序。我创建了一种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);
}
在这方面请帮助我。我不知道为什么会这样。
答案 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);
它起作用了。