У меня есть строковый ресурс
<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, это выглядит так: 
Если пароль, введенный пользователем, содержит число, я хочу изменить цвет "Минимум 1 номер" из текста и так далее.
можно ли этого достичь или мне нужно следовать другим путем?
До сих пор я пробовал следующим образом, но я не знаю, как написать начальное и конечное значения для строкового ресурса.
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)));
Я хотел программно изменить цвет подстроки.
затем поместите строковый ресурс в локальную строковую переменную и вызовите его как tv.setText(Html.fromHtml(source);
Сначала поймите проблему.
@Praveen Проверьте мой обновленный код. Я думаю, теперь вы можете понять.
Да, есть еще один способ. Отформатируйте строку с помощью свойства html font-color, затем передайте ее методу 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);
Возможно, это сможет вам помочь