Как добавить гиперссылку на текст в настраиваемом диалоге? - PullRequest
0 голосов
/ 01 сентября 2018

У меня есть собственный диалог с Textview внутри. Я хочу добавить гиперссылку на текст. Я пытался использовать setMovementMethod(LinkMovementMethod.getInstance()), но он все еще не работает. Однако это работает, когда я применяю его к просмотру текста, которого нет в моем настраиваемом диалоговом окне.

Вот мой диалог.

final Dialog dialog = new Dialog(this);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    dialog.setCancelable(true);
    dialog.setContentView(R.layout.license_dialog_layout);

    TextView text = dialog.findViewById(R.id.text_dialog);

    String str = "Link";
    text.setText(context.getResources().getString(R.string.my_link, str));

    dialog.show();
    text.setMovementMethod(LinkMovementMethod.getInstance());

Мой строковый ресурс:

<string name="my_link"><a href="https://www.google.com/">%1$s</a></string>

Xml:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:autoLink="web"
    android:id="@+id/text_dialog" />

Ответы [ 3 ]

0 голосов
/ 02 сентября 2018

Попробуйте переместить text.setMovementMethod(LinkMovementMethod.getInstance()); до dialog.show();,

Поскольку ваш html-текст определен в string.xml, попробуйте получить его следующим образом, а затем задайте его для вашего textview.

mTextView.setText(getText(R.string.my_styled_text));

Это выбирает текст со стилем, а не только строку, как в случае getString(), следовательно, вам не понадобится Html.fromHtml().

Примечание: - getString () может потребовать, чтобы вы заключили строку в CDDATA, например: -

<string name="foo"><![CDATA[<a href="https://www.google.com/">Link</a>]]></string>
0 голосов
/ 02 сентября 2018

Наконец-то решил. 2 вещи отсутствовали.

Сначала я должен был заключить свою строку в CDATA следующим образом:

<string name="my_link"><![CDATA[<a href="https://www.google.com/">%1$s</a>]]></string>

Тогда я просто изменил эту строку:

text.setText(Html.fromHtml(getResources().getString(R.string.my_link, str)));
0 голосов
/ 01 сентября 2018

Используйте эту строку:

text.setText(Html.fromHtml(context.getResources().getString(R.string.my_link)));
...