【发布时间】:2018-07-05 12:02:28
【问题描述】:
我有简单的Edittext,当我要在设置监听器new textWatcher 中更改输入字母时,它是onTextChanged() 方法,例如:
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
Log.d("qwer", "onTextChanged: " + s + " " + start + " " + before + " " + count);
String originalText = s.toString();
int originalTextLength = originalText.length();
int currentSelection = textHeading.getSelectionStart();
StringBuilder sb = new StringBuilder();
boolean hasChanged = false;
for (int i = 0; i < originalTextLength; i++) {
char currentChar = originalText.charAt(i);
if (isAllowed(currentChar) && i < 21) {
sb.append(currentChar);
} else {
hasChanged = true;
textHeading.setError("Please insert current letters");
}
}
if (hasChanged) {
String newText = sb.toString();
textHeading.setText(capitalize(newText));
textHeading.setSelection(currentSelection);
}
}
当我将经过验证的数据设置回编辑文本时,无限循环开始,因为它再次调用方法ontextCahnged()。所以我的目标是动态更改输入字母,我必须将其大写。我知道有更多最简单的方法可以做到这一点。但我需要这样做。
【问题讨论】:
-
我的目标是动态更改输入字母??你能详细说明一下吗?
-
只需在 xml 中的 EditText 中设置
android:inputType="textCapSentences"。 -
当用户在编辑文本中输入字母时,我必须捕获所有输入字母并逐个字母动态验证它们...
标签: android android-edittext textwatcher