【问题标题】:How to change text color of the part of the TextView?如何更改TextView部分的文字颜色?
【发布时间】:2016-02-19 18:30:21
【问题描述】:

我的应用程序上有简单的 textView 控制器。
在这个 textView 上,我设置了文本“123456789” - 文本颜色为黑色。

我希望最后三个数字 ( 789 ) 以红色文本颜色显示。

有没有不使用两个 textView 控件的简单方法
(一个将包含黑色的“123456”,第二个将包含红色的“789”)

【问题讨论】:

标签: android


【解决方案1】:

你可以用这个。

textview.setText(Html.fromHtml(getString(R.string.stringname) + "" + " *" + "", Html.FROM_HTML_MODE_LEGACY));

【讨论】:

    【解决方案2】:

    你可以用这个方法

    public static final Spannable getColoredString(Context context, CharSequence text, int color) {
            Spannable spannable = new SpannableString(text);
            spannable.setSpan(new ForegroundColorSpan(color), 0, spannable.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
            return spannable;
        }
    

    然后你调用是通过使用

    textview.append(getColoredString(this, "Hi!", ContextCompact.getColor(this, R.color.red)));
    textview.append(getColoredString(this, "User", ContextCompact.getColor(this, R.color.green)));
    

    【讨论】:

    • 这是最可靠的方法,因为它适用于 SDK 级别,即使在较低/较旧版本中也是如此。
    【解决方案3】:

    您可以使用 SpannableString 来为TextView 中的字符串设置样式。

    Demo

    SO Post

    【讨论】:

      【解决方案4】:

      您可以在您的 java 类中使用 HTML 横幅: 示例:

       textElement.setText(Html.fromHtml("123456 <fontcolor='#FF0000'>789</font>"));
      

      或者在您的 XML 文件中使用 CData 格式: 示例:

      <string name="numbers"><![CDATA[123456<fontcolor="#FF0000">789</font>]]></string>
      

      希望对你有所帮助;)

      【讨论】:

      • 我知道这是发布答案的竞赛..但在提交答案之前要小心。
      • 抱歉,我现在正在使用手机,无法让它显示它刚刚消失的 HTML 脚本:/
      【解决方案5】:

      你可以使用

      myTextView.setText(Html.fromHtml(stringB + "<font color=red>" + stringA + "</font>);
      

      【讨论】:

        【解决方案6】:

        试试这个:

        使用SpannableTextViewTextView 设置为HTML

        String text = "<font color='black'>123456</font><font color='red'>789</font>";
        textView.setText(Html.fromHtml(text), TextView.BufferType.SPANNABLE);
        

        【讨论】:

        • Html.fromHtml(text) 已弃用,而 Html.fromHtml(String, int) 可从 api 级别 24..
        • 这不可靠,并且不适用于所有 SDK 级别,特别是在旧版本(例如 21)上。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-26
        • 2016-08-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多