【发布时间】:2018-06-26 22:32:03
【问题描述】:
有没有办法改变部分edittext文本的颜色?
在我的应用程序中,用户可以使用他们的用户名在帖子中标记他的朋友,现在我想在用户仍在输入时将用户名颜色更改为蓝色,以便他知道他成功标记了他的朋友(就像在 Facebook 中标记朋友一样)
我仍然没有任何代码,因为我不知道如何开始!有什么帮助吗?
【问题讨论】:
标签: android android-layout android-edittext
有没有办法改变部分edittext文本的颜色?
在我的应用程序中,用户可以使用他们的用户名在帖子中标记他的朋友,现在我想在用户仍在输入时将用户名颜色更改为蓝色,以便他知道他成功标记了他的朋友(就像在 Facebook 中标记朋友一样)
我仍然没有任何代码,因为我不知道如何开始!有什么帮助吗?
【问题讨论】:
标签: android android-layout android-edittext
如果您只需要对EditText 中的用户名进行颜色处理,您可以使用Spannables。在这种情况下,ForegroundColorSpan 将是一个好的开始。
简化的解决方案如下所示:
String usernameToLookFor = "michael";
String myString = "Welcome world to michael !!";
//Create spannable string
SpannableString spannableString = new SpannableString(myString);
//Determine the start and end of the span i.e. which section you want colored
//Note: loop it if username appears multiple times in main string
int usernameStart = myString.indexOf(usernameToLookFor);
int usernameEnd = usernameStart + usernameToLookFor.length;
//Apply color spannable to SpannableString
spannableString.setSpan(ForegroundColorSpan(ContextCompat.getColor(context, R.color.highlighted_color)),usernameStart, usernameEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//Set spannable to edit text
myEditText.setText(spannableString);
非常粗略的回答。希望对您有所帮助。
【讨论】:
你可以在你的代码中插入一个 html 到 textView 中,然后你可以在文本的特定部分定义一种颜色:
myTextView
.setText(
Html.fromHtml(
"Your text<span color='<your color>'>colored part</span> rest of your text"
));
【讨论】: