直接上代码

新建DecimalInputTextWatcher类继承TextWatcher (代码可直接复制使用)

import android.text.Editable;

import android.text.InputFilter;

import android.text.TextWatcher;

import android.widget.EditText;

/**

* EditText 限制输入整数和小数 的位数

* 默认 整数位无限制,小数位 最多2位

*/

public class DecimalInputTextWatcher implements TextWatcher {

private static final int DEFAULT_DECIMAL_DIGITS = 2;//默认 小数的位数 2 位

private EditText editText;

private int decimalDigits;// 小数的位数

private int integerDigits;// 整数的位数

public DecimalInputTextWatcher(EditText editText) {

this.editText = editText;

this.decimalDigits = DEFAULT_DECIMAL_DIGITS;

}

public DecimalInputTextWatcher(EditText editText, int decimalDigits) {

this.editText = editText;

if (decimalDigits <= 0)

throw new RuntimeException("decimalDigits must > 0");

this.decimalDigits = decimalDigits;

}

public DecimalInputTextWatcher(EditText editText, int integerDigits, int decimalDigits) {

this.editText = editText;

if (integerDigits <= 0)

throw new RuntimeException("integerDigits must > 0");

if (decimalDigits <= 0)

throw new RuntimeException("decimalDigits must > 0");

this.decimalDigits = decimalDigits;

this.integerDigits = integerDigits;

}

@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 editable) {

String s = editable.toString();

editText.removeTextChangedListener(this);

if (s.contains(".")) {

if (integerDigits > 0) {

editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(integerDigits + decimalDigits + 1)});

}

if (s.length() - 1 - s.indexOf(".") > decimalDigits) {

s = s.substring(0,

s.indexOf(".") + decimalDigits + 1);

editable.replace(0, editable.length(), s.trim());//不输入超出位数的数字

}

} else {

if (integerDigits > 0) {

editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(integerDigits + 1)});

if (s.length() > integerDigits) {

s = s.substring(0, integerDigits);

editable.replace(0, editable.length(), s.trim());

}

}

}

if (s.trim().equals(".")) {//小数点开头,小数点前补0

s = "0" + s;

editable.replace(0, editable.length(), s.trim());

}

if (s.startsWith("0") && s.trim().length() > 1) {//多个0开头,只输入一个0

if (!s.substring(1, 2).equals(".")) {

editable.replace(0, editable.length(), "0");

}

}

editText.addTextChangedListener(this);

}

}

使用

editText.addTextChangedListener(new DecimalInputTextWatcher(weight, 3, 5));

//限制输入位数:整数3位,小数点后两位

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

Android 代码实现整数处理为小数,Android EditText限制输入整数和小数的位数的方法示例...相关推荐

  1. EditText 限制输入整数和小数 的位数

    如题,本文主要说的就是  如何限制 EditText 中 可输入整数和小数 的位数 . 近期,由于公司业务需求中有价格输入功能,给出的要求说是,必须整数能输入几位,小数能输入几位...好嘛,产品一句话 ...

  2. quado编辑Android代码步骤,Ubuntu11.10下编译android内核源码

    编译android源码时并不会自动编译android内核,因此需要手动编译这部分代码.编译内核所用的时间比编译android源码要少得多,只需一会就编译完成. 1.确定内核版本 进入存放android ...

  3. Android代码导出数据库,导入/导出到android sqlite数据库

    我看过几篇关于如何在android中导入和导出数据库的帖子,我找到了这些代码,但我似乎无法使它工作.我收到错误java.io.filenotfoundexception / storage / sdc ...

  4. android 代码设置居右_Android 开发实现EditText 光标居右显示

    Android 开发实现EditText 光标居右显示 前言: 有些时候肯定会遇到这种奇葩的需求,光标要靠右显示,因为Android里面光标默认是靠左显示的,那怎么实现呢,肯定有办法的,这里提供一种实 ...

  5. android 代码中使用dp,简单谈谈Android中SP与DP的区别

    从一开始写Android程序,就被告知这些常识 一.dp(或者dip device independent pixels) 一种基于屏幕密度的抽象单位.在每英寸160点的显示器上,1dp=1px.不同 ...

  6. 酒店预定android代码,毕业设计(论文)-基于Android的酒店预定系统设计(全套源代码).doc...

    PAGE 基于Android的酒店预定系统 摘 要 二十一世纪是一个集数字化.网络化.信息化为特征的时代.在这个以网络为核心的社会里,越来越多的人接受了电子商务这种便捷.快速的交易形式,因而Andro ...

  7. 开源中国android代码是什么,开源中国 OsChina Android 客户端源码分析(1)启动界面 app_start...

    1启动界面的布局文件为app_start.xml ,对应的类文件为net.oschina.app 包下的AppStart.java. 2对于布局文件而言,因为只显示一张主题图片,因此布局简单直接设置背 ...

  8. android 代码审核 同质化,李相国:Android同质化竞争以差异制胜

    李相国:Android同质化竞争以差异制胜 来源:luzhongguo 作者:华仔 浏览:906 时间:2016-08-10 14:18 标签: 摘要: "王道"一词,最早出自孟子 ...

  9. android代码修改mp3文件封面,从android中的mp3文件中提取专辑封面

    对于api 10及以上 android.media.MediaMetadataRetriever mmr = new MediaMetadataRetriever(); mmr.setDataSour ...

最新文章

  1. python moviepy 特效编辑
  2. 【HDU 2028】Lowest Common Multiple Plus
  3. alibaba cloud 打包_阿里也上VS Code船了,发布Alibaba Cloud Toolkit插件
  4. bat遍历当前目录下的文件,批量重命名
  5. leetcode-search-in-rotated-sorted-array
  6. Mysql入门的10条语句
  7. 王思聪限制消费令被取消!
  8. JS 回车提交,兼容IE、火狐、Opera、Chrome、Safari
  9. Android 解决EditText和ScrollView的滚动冲突
  10. java支付管理有源码_一款java版可接入微信、支付宝的三方支付系统项目
  11. 计算机系最好的985大学排名,2017年全国“985”大学排名及王牌专业全解析
  12. 手机上将mp4转换成amv_如何在智能手机上将图像转换为黑白图像
  13. 层间距离对ct图像的影响_CT图像影响因素
  14. 产品管理 OKR:最佳实践和示例
  15. excel随机数_EXCEL随机数函数rand、randbetween
  16. SLAM_视觉SLAM面试题及答案汇总
  17. android 摄像头检测工具,检摄app下载-检摄软件(检测摄像头)下载 v1.0.7安卓版_5577安卓网...
  18. c语言API用法 查询
  19. Java中,amp;amp;amp;amp;与amp;amp;,||与|的区别
  20. 前端——html——html图像

热门文章

  1. Spring 的优点
  2. centos安装 TA-Lib
  3. seconds_behind_master监控复制推延的不足及pt-heartbeat改进方法
  4. Oracle RAC 客户端连接负载均衡(Load Balance)
  5. 记:第一次更新服务器CUDA和GPU驱动
  6. [c/c++] programming之路(7)、数据类型转换、偷钱小程序、进制转换
  7. [故障公告]14:40-15:00博客站点web服务器雪崩似的CPU 100%
  8. [老老实实学WCF] 第八篇 实例化
  9. 举例什么时候会用到 call(), apply()
  10. java jms clust,Geoserver 的 JMS Cluster modules(集群数据同步)