有什么方法可以在 Android 中以编程方式更改子字符串的颜色?
Is there any way to change color of sub-string programmatically in Android?
我有一个字符串资源
<string name="redesign_password_pattern">Your password must contain the following:\n\t• A minimum of 8 characters\n\t• At least 1 capital letter\n\t• At least 1 small letter\n\t• At least 1 number\n\t• At least 1 of the following special characters: !, @, #, $, *</string>
当我将此字符串设置为 TextView
时,它看起来像这样
如果用户输入的密码包含数字,我想从文本中更改"At least 1 number"的颜色和很快。
可以通过这种方式实现还是我需要采用其他方式?
到目前为止,我尝试了以下方式,但我不知道如何为字符串资源编写开始和结束值。
SpannableString spannableString = new SpannableString(getString(R.string.redesign_password_pattern));
spannableString.setSpan(new ForegroundColorSpan(GREEN), 101, 130, 0);
pswFormat.setText(spannableString);
而且我不想写 6 个不同的 TextViews
。请帮我想办法。
提前致谢。
试试这个方法:
<string name="hello_world_test">Your password must contain the following:\n\t•
<font color= "#F44336" name="1">A minimum of 8 characters\n\t•</font>
<font color= "#008577" name="2">At least 1 capital letter\n\t• </font>
<font color= "#CDDC39" name="3">At least 1 small letter\n\t•</font>
<font color= "#008577" name="4">At least 1 number\n\t•</font>
<font color="#9C27B0" name="5">At least 1 of the following special characters: !, @, #, $, *</font></string>
tv.setText(Html.fromHtml(getResources().getString(R.string.hello_world_test)));
是的,还有一个办法。
使用 html 的字体颜色 属性 格式化字符串,然后将其传递给方法 Html.fromHtml(text)
String text = "<font color=#cc0029>A minimum of 8 characters</font> <font color=#ffcc00>At least 1 capital letter</font>";
yourtextview.setText(Html.fromHtml(text));
您的代码很好,只是缺少开始和结束以及颜色:
spannableString.setSpan(new ForegroundColorSpan(Color.GREEN), 130, 147, 0);
我有一个字符串资源
<string name="redesign_password_pattern">Your password must contain the following:\n\t• A minimum of 8 characters\n\t• At least 1 capital letter\n\t• At least 1 small letter\n\t• At least 1 number\n\t• At least 1 of the following special characters: !, @, #, $, *</string>
当我将此字符串设置为 TextView
时,它看起来像这样
如果用户输入的密码包含数字,我想从文本中更改"At least 1 number"的颜色和很快。
可以通过这种方式实现还是我需要采用其他方式?
到目前为止,我尝试了以下方式,但我不知道如何为字符串资源编写开始和结束值。
SpannableString spannableString = new SpannableString(getString(R.string.redesign_password_pattern));
spannableString.setSpan(new ForegroundColorSpan(GREEN), 101, 130, 0);
pswFormat.setText(spannableString);
而且我不想写 6 个不同的 TextViews
。请帮我想办法。
提前致谢。
试试这个方法:
<string name="hello_world_test">Your password must contain the following:\n\t•
<font color= "#F44336" name="1">A minimum of 8 characters\n\t•</font>
<font color= "#008577" name="2">At least 1 capital letter\n\t• </font>
<font color= "#CDDC39" name="3">At least 1 small letter\n\t•</font>
<font color= "#008577" name="4">At least 1 number\n\t•</font>
<font color="#9C27B0" name="5">At least 1 of the following special characters: !, @, #, $, *</font></string>
tv.setText(Html.fromHtml(getResources().getString(R.string.hello_world_test)));
是的,还有一个办法。 使用 html 的字体颜色 属性 格式化字符串,然后将其传递给方法 Html.fromHtml(text)
String text = "<font color=#cc0029>A minimum of 8 characters</font> <font color=#ffcc00>At least 1 capital letter</font>";
yourtextview.setText(Html.fromHtml(text));
您的代码很好,只是缺少开始和结束以及颜色:
spannableString.setSpan(new ForegroundColorSpan(Color.GREEN), 130, 147, 0);