Android 代码实现整数处理为小数,Android EditText限制输入整数和小数的位数的方法示例...
直接上代码
新建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限制输入整数和小数的位数的方法示例...相关推荐
- EditText 限制输入整数和小数 的位数
如题,本文主要说的就是 如何限制 EditText 中 可输入整数和小数 的位数 . 近期,由于公司业务需求中有价格输入功能,给出的要求说是,必须整数能输入几位,小数能输入几位...好嘛,产品一句话 ...
- quado编辑Android代码步骤,Ubuntu11.10下编译android内核源码
编译android源码时并不会自动编译android内核,因此需要手动编译这部分代码.编译内核所用的时间比编译android源码要少得多,只需一会就编译完成. 1.确定内核版本 进入存放android ...
- Android代码导出数据库,导入/导出到android sqlite数据库
我看过几篇关于如何在android中导入和导出数据库的帖子,我找到了这些代码,但我似乎无法使它工作.我收到错误java.io.filenotfoundexception / storage / sdc ...
- android 代码设置居右_Android 开发实现EditText 光标居右显示
Android 开发实现EditText 光标居右显示 前言: 有些时候肯定会遇到这种奇葩的需求,光标要靠右显示,因为Android里面光标默认是靠左显示的,那怎么实现呢,肯定有办法的,这里提供一种实 ...
- android 代码中使用dp,简单谈谈Android中SP与DP的区别
从一开始写Android程序,就被告知这些常识 一.dp(或者dip device independent pixels) 一种基于屏幕密度的抽象单位.在每英寸160点的显示器上,1dp=1px.不同 ...
- 酒店预定android代码,毕业设计(论文)-基于Android的酒店预定系统设计(全套源代码).doc...
PAGE 基于Android的酒店预定系统 摘 要 二十一世纪是一个集数字化.网络化.信息化为特征的时代.在这个以网络为核心的社会里,越来越多的人接受了电子商务这种便捷.快速的交易形式,因而Andro ...
- 开源中国android代码是什么,开源中国 OsChina Android 客户端源码分析(1)启动界面 app_start...
1启动界面的布局文件为app_start.xml ,对应的类文件为net.oschina.app 包下的AppStart.java. 2对于布局文件而言,因为只显示一张主题图片,因此布局简单直接设置背 ...
- android 代码审核 同质化,李相国:Android同质化竞争以差异制胜
李相国:Android同质化竞争以差异制胜 来源:luzhongguo 作者:华仔 浏览:906 时间:2016-08-10 14:18 标签: 摘要: "王道"一词,最早出自孟子 ...
- android代码修改mp3文件封面,从android中的mp3文件中提取专辑封面
对于api 10及以上 android.media.MediaMetadataRetriever mmr = new MediaMetadataRetriever(); mmr.setDataSour ...
最新文章
- python moviepy 特效编辑
- 【HDU 2028】Lowest Common Multiple Plus
- alibaba cloud 打包_阿里也上VS Code船了,发布Alibaba Cloud Toolkit插件
- bat遍历当前目录下的文件,批量重命名
- leetcode-search-in-rotated-sorted-array
- Mysql入门的10条语句
- 王思聪限制消费令被取消!
- JS 回车提交,兼容IE、火狐、Opera、Chrome、Safari
- Android 解决EditText和ScrollView的滚动冲突
- java支付管理有源码_一款java版可接入微信、支付宝的三方支付系统项目
- 计算机系最好的985大学排名,2017年全国“985”大学排名及王牌专业全解析
- 手机上将mp4转换成amv_如何在智能手机上将图像转换为黑白图像
- 层间距离对ct图像的影响_CT图像影响因素
- 产品管理 OKR:最佳实践和示例
- excel随机数_EXCEL随机数函数rand、randbetween
- SLAM_视觉SLAM面试题及答案汇总
- android 摄像头检测工具,检摄app下载-检摄软件(检测摄像头)下载 v1.0.7安卓版_5577安卓网...
- c语言API用法 查询
- Java中,amp;amp;amp;amp;与amp;amp;,||与|的区别
- 前端——html——html图像
热门文章
- Spring 的优点
- centos安装 TA-Lib
- seconds_behind_master监控复制推延的不足及pt-heartbeat改进方法
- Oracle RAC 客户端连接负载均衡(Load Balance)
- 记:第一次更新服务器CUDA和GPU驱动
- [c/c++] programming之路(7)、数据类型转换、偷钱小程序、进制转换
- [故障公告]14:40-15:00博客站点web服务器雪崩似的CPU 100%
- [老老实实学WCF] 第八篇 实例化
- 举例什么时候会用到 call(), apply()
- java jms clust,Geoserver 的 JMS Cluster modules(集群数据同步)