пятница, апреля 26, 2013

Поместить в TextView текст в формате html и сделать ссылку нажимаемой

Понадобилось:
1. поместить в TextView получаемый с сервера текст, отформатировнный под html
2. сделать так, чтобы при нажатии на ссылку, содержащуюся в этом тексте, открывался бы браузер - и показывал бы содержимое, нажатой ссылке соответствующее.

Очевидное решение использовать

                android:autoLink="web"
                android:linksClickable="true"
привело только к тому, что ссылки выделялись красивым синим цветом, но при нажатии на них ничего не происходило.

Гуглопоиск выдал ссылку с таким работающим решением:
1. не использовать очевидное решение, оставить TextView в самом простом виде (без android:autoLink и android:linksClickable):

            <TextView

                android:id="@+id/txtView"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content" />

2. сделать следующее:
textView.setMovementMethod(LinkMovementMethod.getInstance());

3. после чего можно спокойно присваивать текст:
textView.setText(Html.fromHtml(text))

Упаковал всё это в утилити-метод

public static void showHtml(TextView textView, String text) {
textView.setText(Html.fromHtml(text));
textView.setMovementMethod(LinkMovementMethod.getInstance());
}

и красота.

Комментариев нет: