Подтвердить что ты не робот

Ссылки в TextView

Мне нужно поместить ссылку в TextView, у меня есть строка, содержащая тег <a href="link">Text for link</a> и другой текст. Проблема в том, что если я запускаю проект, я могу видеть текст, но он не доступен для кликов. Я тоже пробовал с тегом <b>, чтобы убедиться, что это работает, и кажется, что он тоже не работает.

Как я могу заставить это работать без использования Linkify?

4b9b3361

Ответ 1

Спасибо за вашу помощь.

Мне удалось выполнить эту работу после того, как я нашел несколько примеров в образцах android.

вот код:

textView.setText(Html.fromHtml(
            "<b>text3:</b>  Text with a " +
            "<a href=\"http://www.google.com\">link</a> " +
            "created in the Java source code using HTML."));
textView.setMovementMethod(LinkMovementMethod.getInstance());

Надеюсь, что это поможет другим...

Ответ 2

Получение ссылок, работающих с html, довольно сложно:

  • Примените текст через xml android:text="@string/… или через setText() (см. другие ответы)

  • Используйте textView.setMovementMethod(LinkMovementMethod.getInstance()), чтобы сделать ссылки кликабельными (см. другие ответы)

  • добавить android:autoLink="web" к вам ресурс XML (раздел TextView), в противном случае теги A не будут отображаться правильно и больше не будут доступны./li >

Примечание 1:
OnClickListener может быть полезна, если ваш TextView содержит только одну ссылку и вы хотите активировать навигацию, даже если пользователь нажимает на вашу ссылку, но внутри TextView.

Примечание 2:
android:linksClickable="true" по-прежнему не работает (с Android 3.2), вместо этого используйте p. 2

Ответ 3

Linkify - это класс, который вы должны использовать для создания ссылок. Кстати, в чем причина не использования Linkify?

Вы можете связать весь текст в текстовом виде с такими действиями, как посещение веб-сайта или вызов телефонного номера на основе схемы. Android обеспечивает самый простой способ сделать это. Рассмотрим приведенный ниже код.

TextView noteView = (TextView) findViewById(R.id.noteview);
noteView.setText(someContent);
Linkify.addLinks(noteView, Linkify.ALL);

Для создания настраиваемых ссылок один и тот же класс Linkify предоставляет различные варианты. Google опубликовал блогпост об этом.

Ответ 4

Я не мог понять это, но, наконец, он начал работать, когда я сделал что-то вроде:

tvTermsOfUse.setText(Html.fromHtml(getString(R.string.tv_terms_of_use_html)));
Linkify.addLinks(tvTermsOfUse, Linkify.ALL);
tvTermsOfUse.setMovementMethod(LinkMovementMethod.getInstance());

Текстовый вид выглядит так:

<TextView
    android:id="@+id/tv_terms_of_use"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:textAlignment="gravity"
    android:gravity="center"
    android:textColor="@android:color/white"
    android:textSize="15sp" />

и строка res:

<string name="tv_terms_of_use_html">
    <![CDATA[This is link to <a href="http://google.com/">Google</a>.]]>
</string>

Важная часть: Linkify.addLinks нужно выполнить до tvTermsOfUse.setMovementMethod, иначе это не сработает.

В XML не требуются другие настройки.

Мне понадобилось около часа, чтобы понять это, надеюсь, что это поможет кому-то.

EDIT:

Согласно комментарию @rfellons

Спасибо. Также для меня работает... НО только с

<uses-permission android:name="android.permission.INTERNET"/>

на Manifest.xml. - rfellons 7 сентября в 13:31

Обязательно проверьте его.

Ответ 5

Использование

android:linksClickable="true"
android:autoLink="web"

Ответ 6

Я почему-то не могу ответить на ваш ответ; Я просто хотел сказать, что вы можете опустить textView.setText и просто поместить его в строковый ресурс и установить это с помощью android:text. Вам просто нужно сохранить textView.setMovementMethod(LinkMovementMethod.getInstance());; к сожалению android:linksClickable="true" сам по себе не работает.

Ответ 7

Решение: Linkify.addLinks(chatText, Linkify.ALL);

Ответ 8

Это работает довольно корректно: (В свойствах textview, внутри xml файла)

android:autolink="web"

Ответ 9

Чтобы динамически добавлять ссылки (выбираемые с сервера), это работает:

textView.setText(Html.fromHtml(
                "<a href=" + response.getLink()
                        + ">" + context.getString(R.string.link_from_server) + "</a> "));

и в XML добавьте это:

android:linksClickable="true"

Если ваш strings.xml имеет следующее:

<string name="link_from_server">Dynamic Link</string>

Это добавит "Динамическое соединение" к вашему текстовому виду, и если вы коснетесь этого, он перейдет по ссылке, предоставленной вашим сервером.