Android金额输入框只允许输入小数点后两位效果

发布时间 - 2026-01-11 01:31:33    点击率:

一:要实现这个效果也不是很复杂,只需要设置输入框输入的字符类型、设置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金额输入框只允许输入小数点后两位效果,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!


# android  # 金额输入框  # EditText限制小数点前后位数的实例  # EditText限制输入数字  # 精确到小数点后1位的设置方法  # Android 限制edittext 整数和小数位数 过滤器(详解)  # Android 限制显示小数点后两位的实现方法  # 输入框  # 小编  # 第一个  # 多个  # 出现在  # 只需  # 两位  # 你想  # 要把  # 点击这里  # 给大家  # 只需要  # 想看  # 不为  # 几步  # 所述  # 写上  # 给我留言  # 很复杂  # 就可以 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】  如何用PHP快速搭建高效网站?分步指南  linux写shell需要注意的问题(必看)  Laravel中的withCount方法怎么高效统计关联模型数量  C++用Dijkstra(迪杰斯特拉)算法求最短路径  如何快速完成中国万网建站详细流程?  如何用美橙互联一键搭建多站合一网站?  Python企业级消息系统教程_KafkaRabbitMQ高并发应用  html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】  网站制作大概多少钱一个,做一个平台网站大概多少钱?  如何在万网自助建站中设置域名及备案?  谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复  LinuxShell函数封装方法_脚本复用设计思路【教程】  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  详解vue.js组件化开发实践  Laravel如何自定义错误页面(404, 500)?(代码示例)  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  详解CentOS6.5 安装 MySQL5.1.71的方法  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  Laravel如何使用Sanctum进行API认证?(SPA实战)  使用spring连接及操作mongodb3.0实例  Laravel如何使用Passport实现OAuth2?(完整配置步骤)  Laravel如何从数据库删除数据_Laravel destroy和delete方法区别  重庆市网站制作公司,重庆招聘网站哪个好?  在线教育网站制作平台,山西立德教育官网?  打开php文件提示内存不足_怎么调整php内存限制【解决方案】  HTML 中如何正确使用模板变量为元素的 name 属性赋值  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  手机网站制作与建设方案,手机网站如何建设?  如何快速生成凡客建站的专业级图册?  bing浏览器学术搜索入口_bing学术文献检索地址  Laravel怎么使用artisan命令缓存配置和视图  深圳网站制作平台,深圳市做网站好的公司有哪些?  焦点电影公司作品,电影焦点结局是什么?  Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  Java垃圾回收器的方法和原理总结  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  Laravel如何升级到最新版本?(升级指南和步骤)  Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解  Laravel如何实现多对多模型关联?(Eloquent教程)  b2c电商网站制作流程,b2c水平综合的电商平台?  如何获取PHP WAP自助建站系统源码?  Laravel如何使用模型观察者?(Observer代码示例)