Java EditText中特定于大写的单词
在EditText中,我想知道如何利用特定的单词。代码如下Java EditText中特定于大写的单词,java,android,android-edittext,Java,Android,Android Edittext,在EditText中,我想知道如何利用特定的单词。代码如下 editText.addTextChangedListener(new TextWatcher() { private static final String KEYWORD = "rain"; private static final String KEYWORD1 = "music"; @Override public void beforeTextChanged
editText.addTextChangedListener(new TextWatcher() {
private static final String KEYWORD = "rain";
private static final String KEYWORD1 = "music";
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
onSaveNote();
}
@Override
public void afterTextChanged(Editable s) {
onSaveNote();
try {
for (StyleSpan span : s.getSpans(0, s.length(), StyleSpan.class)) {
s.removeSpan(span);
}
// Add new spans for every occurrence of the keyword.
int i = 0;
while (i != -1) {
i = editText.getText().toString().indexOf(KEYWORD, i);
if (i != -1) {
s.setSpan(new InputFilter[]{new InputFilter.AllCaps()}, i, i + KEYWORD.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
我试着找这个,但没有找到。InputFilter不工作。如何执行此操作?在后文本更改()
中,执行以下操作:
@Override
public void afterTextChanged(Editable s) {
onSaveNote();
String[] words = s.toString().split("\\s+");
String output = "";
for (String word : words) {
if (word.equalsIgnoreCase(KEYWORD) || word.equalsIgnoreCase(KEYWORD1)) {
output += word.toUpperCase(Locale.getDefault()) + " ";
} else {
output += word + " ";
}
}
editText.setText(output.trim());
}
在PostTextChanged()
中,执行以下操作:
@Override
public void afterTextChanged(Editable s) {
onSaveNote();
String[] words = s.toString().split("\\s+");
String output = "";
for (String word : words) {
if (word.equalsIgnoreCase(KEYWORD) || word.equalsIgnoreCase(KEYWORD1)) {
output += word.toUpperCase(Locale.getDefault()) + " ";
} else {
output += word + " ";
}
}
editText.setText(output.trim());
}
若你们知道你们的文本的值和你们的文本的开始和结束索引
editText.getText().toString().substring(startIndex, endIndex).toUpperCase();
您可以在如下文本中找到起始索引:
editText.getText().toString().indexOf(KEYWORD)
editText.getText().toString().indexOf(KEYWORD) + KEYWORD.length()
结束索引如下:
editText.getText().toString().indexOf(KEYWORD)
editText.getText().toString().indexOf(KEYWORD) + KEYWORD.length()
若你们知道你们的文本的值和你们的文本的开始和结束索引
editText.getText().toString().substring(startIndex, endIndex).toUpperCase();
您可以在如下文本中找到起始索引:
editText.getText().toString().indexOf(KEYWORD)
editText.getText().toString().indexOf(KEYWORD) + KEYWORD.length()
结束索引如下:
editText.getText().toString().indexOf(KEYWORD)
editText.getText().toString().indexOf(KEYWORD) + KEYWORD.length()
请检查一下你的日志,告诉我是怎么回事。别忘了删除PostextChanged()W/AllCapsTransformationMethod中的旧代码:调用方未启用长度更改;不,不。我删除了它。textAllCaps在xml中是真的吗?不。我没有textAllCaps请检查您的日志并告诉我发生了什么。别忘了删除PostextChanged()W/AllCapsTransformationMethod中的旧代码:调用方未启用长度更改;不,不。我删除了它。textAllCaps在xml中是真的吗?不。我没有textAllCaps