Как изменить цветную часть TextView?
text = text + CepVizyon.getPhoneCode() + "\n\n"
+ getText(R.string.currentversion) + CepVizyon.getLicenseText();
activationText.setText(text);
myTextView.setText(text);
Я хочу изменить цвет для строки CepVizyon.getPhoneCode()... как я могу это сделать?
Ответы
Ответ 1
Spannable является более гибким:
String text2 = text + CepVizyon.getPhoneCode() + "\n\n"
+ getText(R.string.currentversion) + CepVizyon.getLicenseText();
Spannable spannable = new SpannableString(text2);
spannable.setSpan(new ForegroundColorSpan(Color.WHITE), text.length(), (text + CepVizyon.getPhoneCode()).length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
myTextView.setText(spannable, TextView.BufferType.SPANNABLE);
Ответ 2
myTextView.setText(Html.fromHtml(text + "<font color=white>" + CepVizyon.getPhoneCode() + "</font><br><br>"
+ getText(R.string.currentversion) + CepVizyon.getLicenseText()));
Ответ 3
Что касается ответа Maneesh, это будет работать, но вам нужно добавить и избежать кавычек для атрибута цвета.
myTextView.setText(Html.fromHtml(text + "<font color=\"#FFFFFF\">" + CepVizyon.getPhoneCode() + "</font><br><br>"
+ getText(R.string.currentversion) + CepVizyon.getLicenseText()));
Ответ 4
Это хорошо для меня!
Spannable spannable = new SpannableString("ABC In-Network DEF");
String str = spannable.toString();
iStart = str.indexOf("In-Network");
iEnd = iStart + 10;/*10 characters = in-network. */
SpannableString ssText = new SpannableString(spannable);
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View widget) {
//your code at here.
}
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(true);
ds.setColor(getResources().getColor(R.color.green));
}
};
ssText.setSpan(clickableSpan, iStart, iEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mTextView.setText(ssText);
mTextView.setMovementMethod(LinkMovementMethod.getInstance());
mTextView.setHighlightColor(Color.TRANSPARENT);
mTextView.setEnabled(true);
Ответ 5
Если у вас есть статический текст, который требует цвета, вы можете добавить его без какого-либо кода через файл строк:
<string name="already_have_an_account">Already have an account? <font color='#01C6DB'>Login</font></string>
затем
<TextView
android:layout_width="wrap_content"
android:layout_height="64dp"
android:text="@string/already_have_an_account"/>
результат
![введите описание изображения здесь]()
не уверен, какие версии api это работает, но не работает для api 19, которые протестированы до сих пор, поэтому, вероятно, только некоторые из последних версий api поддерживают этот
Ответ 6
Один из способов - разделить myTextView
на несколько отдельных TextViews
, один из которых будет только для телефонного кода. Тогда управление цветом этого конкретного TextView
довольно прямолинейно.