cer*_*ler 88 string android colors textview
我正在寻找一种方法来改变在一个字的文本的颜色TextView
从内Activity
.
例如,有了这个:
String first = "This word is ";
String next = "red"
TextView t = (TextView) findViewById(R.id.textbox);
t.setText(first + next);
Run Code Online (Sandbox Code Playgroud)
如何将next
文本颜色更改为红色?
Dan*_*Dan 161
我知道最简单的方法就是使用html.
String first = "This word is ";
String next = "<font color='#EE0000'>red</font>";
t.setText(Html.fromHtml(first + next));
Run Code Online (Sandbox Code Playgroud)
但是这需要你在(如果?)想要改变颜色时重建TextView,这可能会引起麻烦.
cod*_*ber 71
t.setText(first + next, BufferType.SPANNABLE);
Spannable s = (Spannable)t.getText();
int start = first.length();
int end = start + next.length();
s.setSpan(new ForegroundColorSpan(0xFFFF0000), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
Run Code Online (Sandbox Code Playgroud)
你必须使用spannable这也可以让你增加一些文字的大小,使其粗体等....甚至放入一些图像.
Bis*_*kar 30
像这样使用SpannableStringBuilder:
SpannableStringBuilder builder = new SpannableStringBuilder();
SpannableString str1= new SpannableString("Text1");
str1.setSpan(new ForegroundColorSpan(Color.RED), 0, str1.length(), 0);
builder.append(str1);
SpannableString str2= new SpannableString(appMode.toString());
str2.setSpan(new ForegroundColorSpan(Color.GREEN), 0, str2.length(), 0);
builder.append(str2);
TextView tv = (TextView) view.findViewById(android.R.id.text1);
tv.setText( builder, TextView.BufferType.SPANNABLE);
Run Code Online (Sandbox Code Playgroud)
for long string you can use this:
String help = getString(R.string.help);
help = help.replace("some word", "<font color='#EE0000'>some word</font>");
txtDesc.setText(Html.fromHtml(help));
Run Code Online (Sandbox Code Playgroud)