Hea*_*che 1 android android-edittext
提前感谢您的任何回复.
我想在我的Android应用程序中创建一个EditText,它为输入的不同字符设置了不同的颜色.
例如,字母"A"应始终为蓝色,字母"b"应始终为绿色......依此类推.
到目前为止,我无法找到解决方案.请善意指导我正确的方向.
正如所指出的,您可以在输入时将Spannables应用于文本.像这样的东西:
colorEdit.addTextChangedListener(new TextWatcher() {
String lastText = null;
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
Log.d("", "lastText='" + lastText + "'");
Log.d("", "s='" + s + "'");
if (!s.toString().equals(lastText)) {
lastText = s.toString();
String res = "";
char[] split = s.toString().toCharArray();
for (char c : split) {
String color = null;
if (c == 'a') {
color = "red";
} else if (c == 'b') {
color = "green";
} else if (c == 'c') {
color = "blue";
}
// etc...
if (color != null) {
res += "<font color=\"" + color + "\">" + c
+ "</font>";
} else {
res += c;
}
}
int selectStart = colorEdit.getSelectionStart();
int selectEnd = colorEdit.getSelectionEnd();
colorEdit.setText(Html.fromHtml(res));
colorEdit.setSelection(selectStart, selectEnd);
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
@Override
public void afterTextChanged(Editable s) {}
});
Run Code Online (Sandbox Code Playgroud)
有些事情需要注意,我称之为setText导致onTextChanged再次运行的原因,所以我检查文本实际上已经改变了.此外,光标位置未正确保存,因此我也存储和恢复它.
| 归档时间: |
|
| 查看次数: |
3106 次 |
| 最近记录: |