SpannableString html аннотация - PullRequest
0 голосов
/ 16 мая 2019

Я следовал инструкциям здесь Стилизация интернационализированного текста в 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 и получить такой же результат?

1 Ответ

0 голосов
/ 16 мая 2019

Использование HtmlCompat.fromHtml():

SpannedString titleText = new SpannedString(HtmlCompat.fromHtml(title, HtmlCompat.FROM_HTML_MODE_LEGACY));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...