首页 > 代码库 > Android 输入法问题 解决三星s5830i或华为低端机输入法崩溃问题
Android 输入法问题 解决三星s5830i或华为低端机输入法崩溃问题
在EditText里面设置属性 android:inputType="numberDecimal" 在某些三星手机(s5830i)导致其原生输入法奔溃的问题. 若是设置属性为android:inputType="number"则不会崩溃. 原来这些输入法调用不支持浮点数的,仅能支持整数的.
xml中注意一个属性:android:digits="0123456789."
dights限制只能输入0~9和‘ .‘ 这些数据类型,其他的格式不支持
TextEdit设置监听
过滤 空串,非浮点数,开头为0(例如 0123.11)的情况
String regEx = "^[0-9]+\\.{0,1}[0-9]{0,2}$";// 正则表达式 输入只能为浮点数,后面为2位小数字
<span style="font-size:14px;">priceEt.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { if (s != null) { if (".".equals(txt_amount.getText().toString().trim()) || !(Pattern.matches(regEx, txt_amount.getText() .toString().trim()))) { String str = txt_amount.getText().toString().trim(); if (txt_amount.getText().toString().length() >= 1) { txt_amount.setText(str.substring(0, txt_amount.getText() .toString().length() - 1)); txt_amount.setSelection(txt_amount.getText().toString() .length()); } } } } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void afterTextChanged(Editable s) { } });</span>
xml中注意一个属性:android:digits="0123456789."
dights限制只能输入0~9和‘ .‘ 这些数据类型,其他的格式不支持
<span style="font-size:14px;"><EditText android:id="@+id/money" android:layout_width="fill_parent" android:layout_height="60dp" android:background="@null" android:singleLine="true" android:digits="0123456789." android:imeOptions="actionNext" android:maxLength="7" /></span>
完成上面两个步骤 ,就可以实现自定义浮点数据了,低端机也就不会出现调用api 的numberDecimal类型,输入法报错了。
Android 输入法问题 解决三星s5830i或华为低端机输入法崩溃问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。