java - 如何在我的计算器应用程序中阻止 Edittext 中的重复字体?
问题描述
我正在制作一个简单的计算器应用程序。我不希望用户能够将乘法 (x) 字符输入为彼此相邻的两倍或更多。(如 xx、xxx、xxx...)。以下是我尝试过的代码。
int cursorPos=edt_input.getSelectionStart();
if (edt_input.getText().toString().equals("×")&&cursorPos==0||edt_input.getText().toString().equals("×")&&cursorPos==+1){
edt_input.setText("");
}
解决方案
像这样使用 InputFilter
InputFilter filter = new InputFilter() {
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
for (int i = start; i < end; i++) {
if (Character.isLetter(source.charAt(i)) {
if (Character.isLetter(source.charAt(i - 1)) {
return "";
}
}
}
};
}
您还可以使用 TextWatcher 类来获得相同的功能
参考:如何在 Android 中使用 TextWatcher 类?
myEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// Do nothing
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
String str = s.toString();
if (str.substring(str.length-3,s.length-1)).equals("xx") {
//put in code to remove the last x via code
}
}
@Override
public void afterTextChanged(Editable s) {
// Do nothing
}
});
推荐阅读
- r - 在 RStudio 中打开的 RDS 表。如何查找字段名称?
- deep-learning - 优化器的 state_dict 中保存了什么?"state","param_groups" 代表什么?
- python - 将图表添加到 matplotlib 子网格
- mongodb - MongoDB 不启动,退出代码 203
- discord.js - Discord JS - 嵌入页脚文本
- anylogic - 自定义资源选择以使用特定叉车运输托盘
- primefaces - 隐藏使用 PrimeFaces 动态创建的显示组件
- vuejs2 - 无法从使用 npm 安装的包中访问功能
- java - Android GPU渲染速度慢的问题
- survey - 使用 Svyciprop 获得两个变量的 CI 流行率