EditText 自动保留两位小数
2019独角兽企业重金招聘Python工程师标准>>>
package com.example.astart;
import java.text.DecimalFormat;
import android.content.Context;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.view.View.OnFocusChangeListener;
import android.widget.EditText;
public class MyUtils {
/**
* 格式化小数
* @param context
* @param paEditTexts
* @param limit 保留小数位数
*/
public static void setEditTextAccuracys(final Context context,final int limit,EditText...paEditTexts){
if(paEditTexts == null) return;
for (int i = 0; i < paEditTexts.length; i++) {
setEditTextAccuracy(context,paEditTexts[i],limit);
}
}
/**
* 格式化小数
* @param context
* @param editText
* @param limit 0 不限制小数位数
*/
private static void setEditTextAccuracy(final Context context,final EditText editText, final int limit) {
editText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(limit != 0){
/**
* 限制输入金额最多为 limit 位小数
*/
if (s.toString().contains(".")) {
if (s.length() - 1 - s.toString().indexOf(".") > limit) {
s = s.toString().subSequence(0,
s.toString().indexOf(".") + limit + 1);
editText.setText(s);
editText.setSelection(s.length());
}
}
}
/**
* 第一位输入小数点的话自动变换为 0.
*/
if (s.toString().trim().substring(0).equals(".")) {
s = "0" + s;
editText.setText(s);
editText.setSelection(2);
}
/**
* 避免重复输入小数点前的0 ,没有意义
*/
if (s.toString().startsWith("0")
&& s.toString().trim().length() > 1) {
if (!s.toString().substring(1, 2).equals(".")) {
editText.setText(s.subSequence(0, 1));
editText.setSelection(1);
return;
}
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable edit) {
}
});
if(limit != 0){
editText.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean hasFocus) {
if(!hasFocus){
if(!editText.getText().toString().isEmpty()){
try {
double value = Double.parseDouble(editText.getText().toString());
DecimalFormat format = new DecimalFormat("0.00");
editText.setText(format.format(value));
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
});
}
}
}
使用
import android.app.Activity;
import android.os.Bundle;
import android.widget.EditText;
public class MainActivity extends Activity {
private EditText monkey;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
monkey=(EditText) findViewById(R.id.et_monkey);
MyUtils.setEditTextAccuracys(this, 2, monkey);
//上下文,最多保留几位小数,EditText控件名
}
}
转载于:https://my.oschina.net/u/2531348/blog/726851
EditText 自动保留两位小数相关推荐
- java保留两位小数(java保留两位小数)
197保留两位小数是多?1.197保留两位小数是多少 1.20 P.S. 你的支持是我坚持的动力~,点下好评吧,亲!!! 两位小数的积是3?两位小数的积是3.872,保留两位小数是,保留 选中区域,点 ...
- JavaScript保留两位小数,自动补零
传来的数值或字符串,转换为浮点数.然后将小数点向右移动两位小数,再利用Math.round()方法进行四舍五入计算,最后除以100,这样实现保留两位小数. var value = Math . rou ...
- sql实现四舍五入保留两位小数,小数不足自动补0
round round实现四舍五入(小数位>2) select round(123.4567,2) round(小数位小于2) select round(123.4,2) round小数位小于2 ...
- java.math.BigDecimal保留两位小数,保留小数,精确位数
http://blog.csdn.net/yuhua3272004/article/details/3075436 使用java.math.BigDecimal工具类实现 java保留两位小数问题 ...
- bigdecimal 保留两位小数_Python的保留小数及对齐
Python的保留小数: 方法1:用round函数(有坑). median = 12.3004886print(round(median, 2)) # 保留两位小数print(round(median ...
- php 两位小数包含0,PHP保留两位小数 - osc_8dm0sbbd的个人空间 - OSCHINA - 中文开源技术交流社区...
我们在项目里经常需要保留小数位数,比如显示金额的时候通常需要保留两位小数位数,除了可以在设计数据库的时候将金额字段设置为decimal(n,2)形式的,通过PHP也可以处理小数数位,PHP中可以处理数 ...
- 实数截断式保留两位小数
实数截断式保留两位小数 不四舍五入保留两位小数 时隔两年,我胡汉三又回来啦!嚯哈哈哈哈!!! 项目场景: 我们的编译器一般都是自动帮我们在输出数据的时候四舍五入的,那么当我们想不用四舍五入进行输出的时 ...
- js强制保留两位小数
计算过程中,发现浮点数如果没有小数位,就会自动舍掉小数点.现在想要做的是无论是整数还是多位小数,强制保留两位小数 1. 转为字符串,对字符串进行操作 //强制保留2位小数,如:2,会在2后面补上00. ...
- mysql的decimal保留两位小数_C#中的decimal怎么保留两位小数
展开全部 在C语言中编写如下程序: 1.decimal d = 0.234M: 2. *保留小数后两位*(注释) 3.d=Math.Round(d,2): 最终结果为:d=0.23,即为6261696 ...
最新文章
- python 列出出当前目录及所有子目录下的文件
- 计算机基础知识自考真题,自考《计算机应用基础》基础试题
- Contains Duplicate II
- 三阶魔方花样玩法,公式汇总
- 第一章:数组与指针概念剖析
- C++中__uuidof是干什么用的
- 怎样才能在前端职场中拥有更强的竞争力?
- 根据运算符优先级解析SQL规则表达式
- spring 属性注入
- CSDN如何赚积分及C币
- 两台电脑怎么互传文件?用它就能搞定!
- 计算机二级C语言怎么过
- WinMerge 过滤器的使用方法
- 在 VS Code 中开始使用 Python
- 多媒体计算机主要有哪些基本特性,多媒体计算机的基本特性
- 分形--Cantor三分集
- android架构师解压密码,咕泡Java架构师第三期完整版
- matlab为什么生成obj文件,为文件输入和输出创建新的 System object
- python卸载模块的方法汇总_Python卸载模块的方法
- SWEBOK软件工程知识体系 - 13.计算基础
热门文章
- dsp广告和信息流广告区别_一文搞懂DSP-蘑菇街DSP广告实践
- uniapp光标自动定义到文本框_如何在Mac上的照片应用中创建自定义日历
- linux:命令常用操作
- anconda安装及opencv配置
- 【赠书】如何构建企业级的推荐系统?这本书值得一看
- 【模型解读】从2D卷积到3D卷积,都有什么不一样
- 开启计算机开机引导兼容模式,Intel决定2020年封禁UEFI兼容模式 将无法开启CSM来启动操作系统...
- java 动态编译 canino_java动态编译
- boost第 4 章 事件处理
- 团队作业5-Alpha版本测试报告(彼岸芳华队)