6

我有一个 TextView 小部件,如下所示

<TextView 
        android:text="@string/inputText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1" />

inputText 在 Strings.xml 中定义为

<String name="inputText">The value of input is positive now</String>

现在,我希望整个文本以棕色显示,并且仅以绿色显示“正面”。

有什么办法吗?简而言之,我的问题是同时为同一个文本视图进行多种着色

4

5 回答 5

15

这是这个问题的一个副本Change text color of one word in a TextView

String first = "This word is ";
String next = "<font color='#EE0000'>red</font>";
t.setText(Html.fromHtml(first + next));
于 2013-02-27T12:10:43.947 回答
7

您可以CDATA在您的内部strings.xml使用一些 HTML 格式存储您的字符串,并将Html.fromHTML其显示在您的TextView.

字符串.xml

<string name="inputText">
    <![CDATA[
      <p>The value of input is <font color='#00ff00'>positive</font> now.</p>
    ]]>
</string>

Java 代码

myTextView.setText(Html.fromHtml(getString(R.string.inputText));
于 2013-02-27T12:11:26.397 回答
2

使用这种方法:用 html 格式化字符串

String text = "<font color=#cc0029>Text with Color first</font> <font color=#ffcc00>Text with Color second</font>";
yourtextview.setText(Html.fromHtml(text));
于 2013-02-27T12:10:42.720 回答
1

使用 Spannable 来做到这一点:

String text = "<font color='brown'>The value of input is </font><font color='green'> positive </font><font color='brown'> color </font>";
textView.setText(Html.fromHtml(text), TextView.BufferType.SPANNABLE);
于 2013-02-27T12:18:53.153 回答
0

试试这个,

TextView tv = (TextView)findViewById(R.id.mytextview01);

SpannableString WordtoSpan = tv.getText();

WordtoSpan.setSpan(new ForegroundColorSpan(Color.GREEN), 23, 30, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

tv.setText(WordtoSpan);
于 2013-02-27T12:21:21.083 回答