Android使用EditText输入浮点型数字设置第一位不能输入小数点并且保留两位小数
2017-08-14 09:36
746 查看
最近做一个非常简单的功能是用EditText输入价格,需求是第一位不能输入小数点,并且要保留小数点后两位。
起初上网百度了一个方法,但是不够严谨,会crash,所以我在这里把他的方法优化了一下。
1.首先,要输入浮点型数字,在xml的EditText里要加上一个属性:android:inputType="numberDecimal";
2.然后在该EditText所在的Activity或者Fragment里加上:(此功能是设置edit允许输入数字并且可以是小数;)
yourEditText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL | InputType.TYPE_NUMBER_VARIATION_NORMAL);
3.最后添加输入监听:
yourEditText.addTextChangedListener(new TextWatcher() {
private int selectionStart;
private int selectionEnd;
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
selectionStart = yourEditText.getSelectionStart();
selectionEnd = yourEditText.getSelectionEnd();
if (!isOnlyPointNumber(askPriceEdt.getText().toString()) && s.length() > 0) {
//删除多余输入的字(不会显示出来)
s.delete(selectionStart - 1, selectionEnd);
yourEditText.setText(s);
yourEditText.setSelection(s.length());
}
}
});
/**
* 保留两位小数正则
*
* @param number
* @return
*/
public static boolean isOnlyPointNumber(String number) {
Pattern pattern = Pattern.compile("^\\d+\\.?\\d{0,2}$");
Matcher matcher = pattern.matcher(number);
return matcher.matches();
}
起初上网百度了一个方法,但是不够严谨,会crash,所以我在这里把他的方法优化了一下。
1.首先,要输入浮点型数字,在xml的EditText里要加上一个属性:android:inputType="numberDecimal";
2.然后在该EditText所在的Activity或者Fragment里加上:(此功能是设置edit允许输入数字并且可以是小数;)
yourEditText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL | InputType.TYPE_NUMBER_VARIATION_NORMAL);
3.最后添加输入监听:
yourEditText.addTextChangedListener(new TextWatcher() {
private int selectionStart;
private int selectionEnd;
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
selectionStart = yourEditText.getSelectionStart();
selectionEnd = yourEditText.getSelectionEnd();
if (!isOnlyPointNumber(askPriceEdt.getText().toString()) && s.length() > 0) {
//删除多余输入的字(不会显示出来)
s.delete(selectionStart - 1, selectionEnd);
yourEditText.setText(s);
yourEditText.setSelection(s.length());
}
}
});
/**
* 保留两位小数正则
*
* @param number
* @return
*/
public static boolean isOnlyPointNumber(String number) {
Pattern pattern = Pattern.compile("^\\d+\\.?\\d{0,2}$");
Matcher matcher = pattern.matcher(number);
return matcher.matches();
}
相关文章推荐
- Android EditText 限制输入类型数字或小数,并且小数位数限定为两位
- android editText 控制输入最大值、保留两位小数、保留小数点前面两位数
- Android 设置EditText为仅输入数字且最多只能有两位数字
- JS限制input输入的为数字并且有小数的时候最多保留两位小数
- android EditText最多输入两位小数&不能以小数点开头&最多一个小数点
- c# 控制TextBox只能输入小数(只能输入一个小数点,小数点后只能输入两位,第一位不能是小数点)
- 使用js让文本框只能输入数字 且小数保留两位
- HTML控制文本框只能输入数字和小数点,并且只能保留小数点后两位
- EditText设置输入仅能输入两位小数,并且设置输入边界
- HTML控制文本框只能输入数字和小数点,并且只能保留小数点后两位 金额转换,阿拉伯数字的金额转换成 面试题
- UITextField只能输入数字以及输入数字和小数点并且小数点后保留2位小数
- 在实现文本框只能输入数字和小数点的基础上实现了价格样式(保留两位小数)
- JS对数字进行货币格式化并且保留两位小数点,小数用0补全
- 关于EditText输入数字时候限制为一个亿的问题,且保留小数点两位小数
- 正则表达式验证 只能数字或小数 只能有一个小数点并且第一位不能为小数点
- 限制输入框只能输入数字,并且保留两位小数
- Android限定EditText的输入类型为数字或者英文(包括大小写),EditText,TextView只能输入两位小数
- JS限制input输入的为数字并且有小数的时候最多保留两位小数
- input只能输入数字和小数点,并且只能保留小数点后两位
- 【Android】设置EditText为仅输入数字且最多只能有两位数字