我尝试使用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);
答案 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});