一:要实现这个效果也不是很复杂,只需要设置输入框输入的字符类型、设置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金额输入框只允许输入小数点后两位效果相关推荐

  1. uni app- vue 数字单位转换为 万/百万/千万/亿(保存小数点后两位)

    **uni app- vue 数字单位转换为 万/百万/千万/亿(保存小数点后两位) ** 全部代码: <template><view class="content&quo ...

  2. [js] 写一个方法,实时验证input输入的值是否满足金额如:3.56(最多只有两位小数且只能数字和小数点)的格式,其它特殊字符禁止输入

    [js] 写一个方法,实时验证input输入的值是否满足金额如:3.56(最多只有两位小数且只能数字和小数点)的格式,其它特殊字符禁止输入 <body><input type=&qu ...

  3. 请编写一个个人所税计算器,用户输入应发工资薪金所得、五险一金金额和个税免征额,输出应缴税款和实发工资,结果保留小数点后两位。当输入数字小于0或等于0时,输出“error”。‪

    题目 假设个人所得税税率表如下:‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬ ...

  4. 实现EditText输入金额(小数点后两位)

    通过设置过滤器(Filter)实现EditText输入金额(小数点后两位). 布局文件 <!--inputType设置为numberDecimal--> <EditTextandro ...

  5. 金额保留小数点后两位方法

    vue金额格式化的方法 封装全局js文件,并在main.js中引用 //global.js export default {install(Vue) {Vue.prototype.$moneyForm ...

  6. 显示一个数字到小数点后两位

    将PHP字符串四舍五入到小数点后两位的正确方法是什么? $number = "520"; // It's a string from a database$formatted_nu ...

  7. input限制输入小数点后两位(vue版本)

    抛砖引玉--上代码 首先想到在input事件中正则匹配一下,但是,在输入错误格式或非数字的情况下,会将整个输入框清空,体验很不好: <template><input placehol ...

  8. html 正则表达式验证金额,js金额校验,js正则表达式,包含正负,小数点后两位...

    js金额校验,js正则表达式,包含正负,小数点后两位,js代码如下: function isMoney(s) { //金额 只允许正数 //var exp = /(^[1-9]([0-9]+)?(\. ...

  9. oracle查询保留小数点后三位,关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其他位数)...

    方法一:使用to_char的fm格式,即: to_char(round(data.amount,2),'FM9999999999999999.00') as amount 不足之处是,如果数值是0的话 ...

最新文章

  1. 为什么需要在TypedArray后调用recycle
  2. 如何成为一名专家级的开发人员
  3. 装机必备工具(普通家庭版)
  4. TwinSocketStream
  5. js+jquery手写弹出提示框
  6. layui自带验证体系:手机号验证、邮箱验证、必填项非空验证、数字验证(含代码、案例)
  7. 【绝对干货】TEASER前传之QUASAR:基于四元数的存在外点Wahba问题的可证明最优解
  8. session理论分析
  9. fatal error LNK1104: 无法打开***.exe的错误
  10. 基于JDBC的数据库连接池高效管理策略
  11. 二叉树遍历算法的应用
  12. 蚂蚁课堂笔记之 spring详解
  13. vue.js环境+腾讯防水墙+实现弹窗滑动模块验证登录
  14. 爱加密,梆梆,360加固初比较
  15. 世界四大红茶及中国十大名茶
  16. canvas在舞台上点击后图片旋转_Canvas-图片旋转
  17. 2020 最好的Linux网络监控工具(翻译)
  18. linux下的IDE--codelite
  19. Redis面试题(总结最全面的面试题)
  20. SOLO:Segmenting Objects by Locations阅读笔记

热门文章

  1. 学生生涯---真的就这样逝去了!后悔已不足以!
  2. ARM WFI和WFE指令
  3. MFC中滚动条slider和编辑框edit的联动
  4. 中国人民大学_《组织行为学》_11怎样招到最合适的人
  5. java如何画出表格_Java利用iText7画个性化表格
  6. sift计算描述子代码详解_SIFT解析(三)生成特征描述子
  7. java8函数式编程 视频_快速掌握Java8 Stream函数式编程技巧
  8. java 08_Java08-构造方法
  9. ios开发返回按钮消失_iOS开发之自定义导航栏返回按钮右滑返回手势失效的解决...
  10. Qt多线程中的信号与槽