以编程方式在文本视图中使用的字符串的颜色[重复]

Posted

技术标签:

【中文标题】以编程方式在文本视图中使用的字符串的颜色[重复]【英文标题】:Colours of strings used in a text view programmatically [duplicate] 【发布时间】:2015-09-11 06:35:58 【问题描述】:

是否可以以编程方式设置文本视图中使用的字符串的颜色?我试过用这个,但它不起作用。

TextView txt = (TextView)v.findViewById(R.id.textView1);
        txt.setText(html.fromHtml("<font color='#0099CC'>@string/app_name</font>" +
                        "<font color='#995676'> @string/app_description</font>" +
                        "<font color='#55GGFES'> @string/app_version</font>"
        ));

【问题讨论】:

不,因为我需要在 1 个文本视图中使用多个字符串 我们还有另一个问题 ***.com/questions/10140893/… 实际上是另一个问题的重复 :) 抱歉,没有仔细阅读 如果重复,请删除。 【参考方案1】:

你可以,但不是那么容易。您不能以这种方式在 Java 中的字符串中注入 @string/ 。您可以使用context.getResources().getString(R.id.app_name); 来获取名称。像这样:

    txt.setText(Html.fromHtml("<font color='#0099CC'>"+
         context.getResources().getString(R.id.app_name)+"</font>"+
         "<font color='#995676'>"+
         context.getResources().getString(R.id.app_description)+"</font>"));

【讨论】:

你能展示一下2个字符串的用法吗? 太棒了!谢谢:-)【参考方案2】:

你也可以使用 spannable。

String mString = context.getResources().getString(R.id.app_name);
Spannable coloredSpan = new SpannableString(mString);        
//Spannable.setSpan(Object what, int start, int end, int flags)

coloredSpan.setSpan(new ForegroundColorSpan(Color.BLUE), 0, mString.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

txt.setText(coloredSpan);

【讨论】:

以上是关于以编程方式在文本视图中使用的字符串的颜色[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式用户根据 JavaFX 中的字符串值定义列表视图的颜色

有没有办法以编程方式使用kotlin更改片段中的文本颜色?

如何在 UIAlertController 中以编程方式更改特定按钮文本颜色

以编程方式附加字符后在 UITextField 中显示文本的结尾[重复]

具有多种文本颜色的文本视图android [重复]

当以编程方式完成时,视图不会反映任何变化