博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
限制 EditText 最多输入两位小数
阅读量:4285 次
发布时间:2019-05-27

本文共 1721 字,大约阅读时间需要 5 分钟。

为了美观,先限制一下

android:inputType="numberDecimal"android:maxLength="9"

1.要求与思路

细节要求:

  • 以小数点开头,前面自动加上 “0”
  • 以小数点结尾,去掉小数点

思路:利用 EditText 的输入监听实现小数位的截取,和移动光标到末尾,在失去焦点后,去掉结尾的小数点

2. 解决办法:添加监听

添加输入监听:

editText.addTextChangedListener(new TextWatcher() {    boolean deleteLastChar;// 是否需要删除末尾    @Override    public void beforeTextChanged(CharSequence s, int start, int count, int after) {    }    @Override    public void onTextChanged(CharSequence s, int start, int before, int count) {        if (s.toString().contains(".")) {            // 如果点后面有超过三位数值,则删掉最后一位            int length = s.length() - s.toString().lastIndexOf(".");            // 说明后面有三位数值            deleteLastChar = length >= 4;        }    }    @Override    public void afterTextChanged(Editable s) {        if (s == null) {            return;        }        if (deleteLastChar) {            // 设置新的截取的字符串            editText.setText(s.toString().substring(0, s.toString().length() - 1));            // 光标强制到末尾            editText.setSelection(editText.getText().length());        }        // 以小数点开头,前面自动加上 "0"        if (s.toString().startsWith(".")) {            editText.setText("0" + s);            editText.setSelection(editText.getText().length());        }    }});

添加失去焦点监听:

editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {    @Override    public void onFocusChange(View v, boolean hasFocus) {        EditText editText1 = (EditText) v;        // 以小数点结尾,去掉小数点        if (!hasFocus && editText1.getText() != null && editText1.getText().toString().endsWith(".")) {            editText.setText(editText1.getText().subSequence(0, editText1.getText().length() - 1));            editText.setSelection(editText.getText().length());        }    }});

转载地址:http://wopgi.baihongyu.com/

你可能感兴趣的文章
ProgressBar控件入门
查看>>
SeekBar控件入门
查看>>
DatePicker和TimePicker入门
查看>>
mysql中表中字段中值的删除和添加
查看>>
集合数据在客户端和服务器端以json串形式传递
查看>>
android定位:获取当前位置的经纬度
查看>>
get请求和post请求demo
查看>>
MD5加密工具
查看>>
java四舍五入保留两位小数
查看>>
图片上传功能
查看>>
Android数据持久化功能之一:文件存储
查看>>
Android数据持久化之二:SharedPreferences 存储(上)
查看>>
Android数据持久化之二:SharedPreferences 存储(下)
查看>>
SharedPreference存储实战之记住登陆账号密码
查看>>
自定义控件解决重复编码问题
查看>>
如何在项目的任何地方轻松获取到全局状态信息Context
查看>>
ListView控件性能提升
查看>>
AsyncTask 异步消息处理机制
查看>>
android下拉刷新功能---教你实现简单的ListView下拉刷新
查看>>
ListView分页展示数据功能一(按钮方式)
查看>>