Android: Different colours for different characters in EditText(Android:EditText中不同字符的不同颜色)
问题描述
提前感谢您的任何回复.
Thank you in advance for any responses.
我正在尝试在我的 Android 应用程序中添加一个 EditText,它对输入的不同字符具有不同的颜色.
I am trying to have an EditText in my Android application which has different colours for different characters which are typed in.
例如字母A"应始终为蓝色,字母b"应始终为绿色……以此类推.
For e.g. Alphabet "A" should always be blue, alphabet "b" should always be green... so on.
到目前为止,我还没有找到解决方案.请善待我,指引我正确的方向.
So far, I have no been able to find a solution for it. Please be kind enough to guide me in the right direction.
推荐答案
正如所指出的,您可以在输入文本时将 Spannables 应用于文本.像这样的:
As was pointed out, you can apply Spannables to the text as it is entered. Something like this:
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) {}
});
一些需要注意的事情,我调用 setText
这当然会导致 onTextChanged
再次运行,所以我检查文本是否实际更改.此外,光标位置未正确保存,因此我也将其存储并恢复.
some things to note, I call setText
which of course causes onTextChanged
to run again, so I check that the text actually changed. Also, the cursor position was not saved correctly so I store and restore that as well.
这篇关于Android:EditText中不同字符的不同颜色的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Android:EditText中不同字符的不同颜色
基础教程推荐
- android 应用程序已发布,但在 google play 中找不到 2022-01-01
- UIWebView 委托方法 shouldStartLoadWithRequest:在 WKWebView 中等效? 2022-01-01
- 如何在 iPhone 上显示来自 API 的 HTML 文本? 2022-01-01
- 如何让对象对 Cocos2D 中的触摸做出反应? 2022-01-01
- 如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar? 2022-01-01
- 如何在 UIImageView 中异步加载图像? 2022-01-01
- 在 gmail 中为 ios 应用程序检索朋友的朋友 2022-01-01
- Kivy Buildozer 无法构建 apk,命令失败:./distribute.sh -m “kivy"d 2022-01-01
- 当从同一个组件调用时,两个 IBAction 触发的顺序是什么? 2022-01-01
- Android:对话框关闭而不调用关闭 2022-01-01