Android EditText设置输入类型(输入类型.类型\类别\编号);don';行不通
我正在尝试使用“创建一个只接收数字的编辑文本”(仅在数字键盘上显示)。在Nexus7上,这不会发生:X 这是我的代码: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
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设置输入类型。不确定这是否会解决问题,但值得一试。此外,这将显示数字键和隐藏字母键,但符号键仍将被放大。。我要用它;)我只想要数字:)