首页 > 学院 > 开发设计 > 正文

让EditText不能粘贴和不能输入多个小数点

2019-11-08 00:38:13
字体:
来源:转载
供稿:网友
// 禁止粘贴 et_goods_PRice.setCustomSelectionActionModeCallback(new ActionMode.Callback() { @Override public boolean onPrepareActionMode(ActionMode mode, Menu menu) { return false; } @Override public void onDestroyActionMode(ActionMode mode) { } @Override public boolean onCreateActionMode(ActionMode mode, Menu menu) { return false; } @Override public boolean onActionItemClicked(ActionMode mode, MenuItem item) { return false; } }); et_goods_price.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { SFLog.d(TAG, "onTextChanged 被执行---->s=" + s + "----start=" + start + "----before=" + before + "----count" + count); // s为改变之后的字符串,开始位置为start,改变数量为count if (s.length() == 0) { return; } // 第一个字符不能是小数点 if (s.charAt(0) == '.') { if (s.length() > 0) { et_goods_price.setText(s.subSequence(1, s.length())); } else { et_goods_price.setText(""); } } // 只能有一个小数点 int dotNum = 0; for (int i = 0, j = s.length(); i < j; i++) { char letter = s.charAt(i); if (letter == '.') { dotNum++; if (dotNum > 1) { et_goods_price.setText(s.subSequence(0, start).toString() + s.subSequence(start + count, s.length()).toString()); et_goods_price.setSelection(start); return; } } } // 只能输入一位小数 if (s.toString().contains(".")) { int decimalNum = s.toString().subSequence(s.toString().indexOf("."), s.length()).length(); if (decimalNum > 2) { et_goods_price.setText(s.subSequence(0, start).toString() + s.subSequence(start + count, s.length()).toString()); et_goods_price.setSelection(start); } } } @Override public void afterTextChanged(Editable s) { resetPrice(); } });
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表