android - 在编辑文本中按零任意次,但用户应该只能看到 1 位数字,例如计算器
问题描述
我有一个编辑文本来填写金额。所以,我添加了文本观察器,但我不希望用户“0000000 ...”如果用户将连续按“0000 ...”而不是像计算器一样只显示一次“0”
我怎样才能做到这一点?
private void setAmount() {
etAmount.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) {
if (s.length() == 1) {
if (s.toString().equals("0")) {
etAmount.setText("0");
}
}
//Not working
}
@Override
public void afterTextChanged(Editable s) {}
});
}
我想,我的逻辑也是错误的,因为当我输入单个输入并检查s.length
时et.setText("0")
,它会进入无限循环。
解决方案
尝试这个:
etAmount.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) {
}
@Override
public void afterTextChanged(Editable s) {
String text = s.toString();
if (text.length() == 2 && text.charAt(0) == '0') {
etAmount.setText(text.substring(1));
etAmount.setSelection(1);
}
}
});
推荐阅读
- or-tools - 谷歌或工具
- python - 使用输入数据搜索和打印 python-postgres
- typescript - TypeScript 从扩展类函数覆盖中调用基类函数
- rest - 无法插入资源但可由客户端修复时的 HTTP 状态引用
- android - IOS和Android包名
- linux - 如何在word中添加字符并在linux中使用sed命令替换它
- java - Spring JPA,CrudRepository 的保存方法是否立即提交给数据库?
- javascript - 如何使用 JavaScript spread... 语法更改对象的一个字段,该字段属于数组并通过名称-值对访问?
- r - 具有多个条件和多个变体的 if 语句
- tkinter - 我可以在 Tkinter 窗口中添加“gedit”或“sublime”编辑器吗?