android 只输入数字与小数点_Android金额输入框只允许输入小数点后两位效果
一:要实现这个效果也不是很复杂,只需要设置输入框输入的字符类型、设置InputFilter、设置输入变化监听即可。下面直接来看代码吧….
二:new 一个class extends AppCompatEditText并写上一个初始化函数
private void init() {
//设置输入框允许输入的类型(正则)
//对应的布局属性是--->android:digits="0123456789."
setKeyListener(DigitsKeyListener.getInstance("0123456789."));
//设置输入字符
setFilters(new InputFilter[]{inputFilter});
addTextChangedListener(this);
}
三:inputFilter来分割小数后的保留位数
private InputFilter inputFilter = new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
// 删除等特殊字符,直接返回
if (TextUtils.isEmpty(source)) {
return null;
}
String dValue = dest.toString();
String[] splitArray = dValue.split("\\.");
if (splitArray.length > 1) {
String dotValue = splitArray[1];
// 2 表示输入框的小数位数
int diff = dotValue.length() + 1 - 2;
if (diff > 0) {
return source.subSequence(start, end - diff);
}
}
return null;
}
};
如果你想保留其它位数的小数,只需要把上面的2改成你需要的位数即可。
三:输入框输入变化的监听,来处理小数点不能出现在第一位&&不能出现多个
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
//如果输入框为空则不处理
if (TextUtils.isEmpty(s)) {
return;
}
//第一个字符不为小数点
if (s.length() == 1 && s.toString().equals(".")) {
setText("");
return;
}
int counter = counter(s.toString(), '.');
if (counter > 1) {
//小数点第一次出现的位置
int index = s.toString().indexOf('.');
setText(s.subSequence(0, index + 1));
}
setSelection(getText().toString().length());
}
四:统计一个字符在字符串中出现的次数
/**
* 统计一个字符在字符串中出现的次数
*
* @param s 字符串
* @param c 字符
* @return 數量
*/
public int counter(String s, char c) {
int count = 0;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == c) {
count++;
}
}
return count;
}
就这几步就可以轻松实现了,想看源码的点击这里哦源码链接
以上所述是小编给大家介绍的Android金额输入框只允许输入小数点后两位效果,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!
时间: 2017-05-27
android 只输入数字与小数点_Android金额输入框只允许输入小数点后两位效果相关推荐
- uni app- vue 数字单位转换为 万/百万/千万/亿(保存小数点后两位)
**uni app- vue 数字单位转换为 万/百万/千万/亿(保存小数点后两位) ** 全部代码: <template><view class="content&quo ...
- [js] 写一个方法,实时验证input输入的值是否满足金额如:3.56(最多只有两位小数且只能数字和小数点)的格式,其它特殊字符禁止输入
[js] 写一个方法,实时验证input输入的值是否满足金额如:3.56(最多只有两位小数且只能数字和小数点)的格式,其它特殊字符禁止输入 <body><input type=&qu ...
- 请编写一个个人所税计算器,用户输入应发工资薪金所得、五险一金金额和个税免征额,输出应缴税款和实发工资,结果保留小数点后两位。当输入数字小于0或等于0时,输出“error”。
题目 假设个人所得税税率表如下: ...
- 实现EditText输入金额(小数点后两位)
通过设置过滤器(Filter)实现EditText输入金额(小数点后两位). 布局文件 <!--inputType设置为numberDecimal--> <EditTextandro ...
- 金额保留小数点后两位方法
vue金额格式化的方法 封装全局js文件,并在main.js中引用 //global.js export default {install(Vue) {Vue.prototype.$moneyForm ...
- 显示一个数字到小数点后两位
将PHP字符串四舍五入到小数点后两位的正确方法是什么? $number = "520"; // It's a string from a database$formatted_nu ...
- input限制输入小数点后两位(vue版本)
抛砖引玉--上代码 首先想到在input事件中正则匹配一下,但是,在输入错误格式或非数字的情况下,会将整个输入框清空,体验很不好: <template><input placehol ...
- html 正则表达式验证金额,js金额校验,js正则表达式,包含正负,小数点后两位...
js金额校验,js正则表达式,包含正负,小数点后两位,js代码如下: function isMoney(s) { //金额 只允许正数 //var exp = /(^[1-9]([0-9]+)?(\. ...
- oracle查询保留小数点后三位,关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其他位数)...
方法一:使用to_char的fm格式,即: to_char(round(data.amount,2),'FM9999999999999999.00') as amount 不足之处是,如果数值是0的话 ...
最新文章
- 为什么需要在TypedArray后调用recycle
- 如何成为一名专家级的开发人员
- 装机必备工具(普通家庭版)
- TwinSocketStream
- js+jquery手写弹出提示框
- layui自带验证体系:手机号验证、邮箱验证、必填项非空验证、数字验证(含代码、案例)
- 【绝对干货】TEASER前传之QUASAR:基于四元数的存在外点Wahba问题的可证明最优解
- session理论分析
- fatal error LNK1104: 无法打开***.exe的错误
- 基于JDBC的数据库连接池高效管理策略
- 二叉树遍历算法的应用
- 蚂蚁课堂笔记之 spring详解
- vue.js环境+腾讯防水墙+实现弹窗滑动模块验证登录
- 爱加密,梆梆,360加固初比较
- 世界四大红茶及中国十大名茶
- canvas在舞台上点击后图片旋转_Canvas-图片旋转
- 2020 最好的Linux网络监控工具(翻译)
- linux下的IDE--codelite
- Redis面试题(总结最全面的面试题)
- SOLO:Segmenting Objects by Locations阅读笔记
热门文章
- 学生生涯---真的就这样逝去了!后悔已不足以!
- ARM WFI和WFE指令
- MFC中滚动条slider和编辑框edit的联动
- 中国人民大学_《组织行为学》_11怎样招到最合适的人
- java如何画出表格_Java利用iText7画个性化表格
- sift计算描述子代码详解_SIFT解析(三)生成特征描述子
- java8函数式编程 视频_快速掌握Java8 Stream函数式编程技巧
- java 08_Java08-构造方法
- ios开发返回按钮消失_iOS开发之自定义导航栏返回按钮右滑返回手势失效的解决...
- Qt多线程中的信号与槽