Я следовал инструкциям здесь Стилизация интернационализированного текста в Android
и используемый код:
SpannedString titleText = (SpannedString) getText(R.string.title);
Annotation[] annotations = titleText.getSpans(0, titleText.length(), Annotation.class);
SpannableString spannableString1 = new SpannableString(titleText);
for (Annotation annotation : annotations) {
if (annotation.getKey().equals("id")) {
final String fontName = annotation.getValue();
spannableString1.setSpan(new StyleSpan(Typeface.BOLD),
titleText.getSpanStart(annotation),
titleText.getSpanEnd(annotation),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
spannableString1.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
Toast.makeText(MainActivity.this, fontName + "", Toast.LENGTH_SHORT).show();
}
}, titleText.getSpanStart(annotation), titleText.getSpanEnd(annotation), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
textView.setMovementMethod(LinkMovementMethod.getInstance());
textView.setText(spannableString1);
Я проверил это со строкой <string name="title"><i>Best practices for</i> <annotation id="1">text1</annotation> on Android <annotation id="2">text2</annotation></string>
в string.xml
, и она работает так хорошо.
Но я хочу переместить строку из string.xml
в MainActivity.class
с кодом
String title="<i>Best practices for</i> <annotation id=\"1\">text1</annotation> on Android <annotation id=\"2\">text2</annotation>";
SpannedString titleText = new SpannedString(title);//
Annotation[] annotations = titleText.getSpans(0, titleText.length(), Annotation.class);
...
но это не работает. Он показывает все теги HTML в моем TextView.
Как я могу изменить текст с string.xml
на MainActivity.java
и получить такой же результат?