当用户输入内容时,如何在 EditText 的末尾添加问号(?)。每个文本更改的问号都应该保留在编辑文本的末尾,就像在 Quora 中发生的那样。我正在使用文本观察器更改文本并将问号放在末尾,但我没有得到确切的逻辑。
textWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
questionTxt.removeTextChangedListener(textWatcher);
questionTxt.setText(questionTxt.getText().toString().replace("?", ""));
questionTxt.setSelection(questionTxt.getText().length()-1);
questionTxt.setText(questionTxt.getText().toString()+"?");
questionTxt.addTextChangedListener(textWatcher);
questionTxt.addTextChangedListener(textWatcher);
}
@Override
public void afterTextChanged(Editable editable) {
questionTxt.setSelection(editable.length());
if (questionTxt.getText().toString().length() <= 0)
questionTxt.setError("Enter question");
}
};
questionTxt.addTextChangedListener(textWatcher);
请引用下图。
最佳答案
获得此效果的最佳方法是创建 TextWatcher
,如下所示:
textWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
if (editable.length() == 0) {
return;
}
String text = editable.toString();
int indexOfQuestionMark = text.lastIndexOf("?");
if (indexOfQuestionMark == -1 || indexOfQuestionMark != text.length() - 1) {
editable.append("?");
}
}
};
questionTxt.setHint("Enter question")
questionTxt.addTextChangedListener(textWatcher);
只需稍加调整,您的解决方案就应该完美运行:)
我在问题txt中设置了提示,而不是设置错误。这样,当未输入任何内容时,用户将看到文本“输入问题”。
“Alghoritm”正在搜索“?”出现在非空输入中。如果它在最后 -> 则无需执行任何操作。如果未找到,或在文本内的某处找到 -> 则在末尾添加问号。
请注意,此 TextWatcher 实现不依赖于 QuestionTxt,因此您可以将其放在另一个文件中。
关于android - 如何在 quora 中的编辑文本末尾添加问号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32635193/