Сделать гиперссылку textview в android - PullRequest
65 голосов
/ 15 февраля 2012

Я хочу создать ссылку на текстовый вид, например Google . В любом случае, чтобы сделать ссылку, как это. (т. е.) при нажатии на слово Google он должен открыть соответствующую ссылку. Любые идеи приветствуются.

Ответы [ 6 ]

112 голосов
/ 15 февраля 2012

Попробуйте, и дайте мне знать, что произойдет ..

Использование кода Java:

TextView textView =(TextView)findViewById(R.id.textView);
textView.setClickable(true);
textView.setMovementMethod(LinkMovementMethod.getInstance());
String text = "<a href='http://www.google.com'> Google </a>";
textView.setText(Html.fromHtml(text));

Начиная с уровня API> = 24 и выше Html.fromHtml(String source) устарело, вместо этого используйте fromHtml(String, int),

textView.setText(Html.fromHtml(text, Html.FROM_HTML_MODE_COMPACT));

Или в файле макета XML, внутри атрибутов виджета TextView

android:autoLink="web"
android:linksClickable="true"
51 голосов
/ 15 февраля 2012

используйте android:autoLink="web" в xml вашего TextView.Он должен автоматически конвертировать URL-адреса, доступные по клику (если они есть в тексте)

26 голосов
/ 25 февраля 2014

Все проверено и работает 100%
Решение: android:autoLink="web"
ниже приведен полный пример

Образец макета Xml

    <TextView
        android:id="@+id/txtLostpassword"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:autoLink="email"
        android:gravity="center"
        android:padding="20px"
        android:text="@string/lostpassword"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <TextView
        android:id="@+id/txtLostpassword"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:autoLink="web"
        android:gravity="center"
        android:padding="20px"
        android:text="@string/defaultpassword"
        android:textAppearance="?android:attr/textAppearanceSmall" />

Строка в string.xml

<string name="lostpassword">If you lost your password please contact <a href="mailto:support@cleverfinger.com.au?Subject=Lost%20Password" target="_top">support@cleverfinger.com.au</a></string>

<string name="defaultpassword">User Guide <a href="http://www.cleverfinger.com.au/user-guide/">http://www.cleverfinger.com.au/user-guide/</a></string>
6 голосов
/ 23 мая 2014

Это также можно сделать с помощью свойства по умолчанию Textview

android:autoLink="email"
4 голосов
/ 16 марта 2017

Примечание. - Html.fromHtml устарел в Android N

Вам необходимо проверить и поддерживать Android N и более поздние версии Android

                  //Set clickable true
                 tagHeading.setClickable(true);

                  //Handlle click event
                  tagHeading.setMovementMethod(LinkMovementMethod.getInstance());

                if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
                    tagHeading.setText(Html.fromHtml("<a href='https://github.com/hiteshsahu'>https://github.com/hiteshsahu</a>", Html.FROM_HTML_MODE_LEGACY));
                } else {
                    tagHeading.setText(Html.fromHtml("<a href='https://github.com/hiteshsahu'>https://github.com/hiteshsahu</a>"));
                }

1010 * Альтернативно *

Вы не хотите, чтобы идентификатор программно добавлял флаг автоссылки в TextView.

Android: Автоссылка = "паутина"

андроида: linksClickable = "истинный"

Таким образом, вам не нужно добавлять <a href='somelink'> теги.

Что является недостатком, если вы хотите добавить hyperlink на text, вы не можете сделать это таким образом. например, вы не можете сделать что-то вроде этого: - [ hiteshsahu ] [1]

           <TextView
                android:id="@+id/tag_info"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/tag_ll"
                android:layout_gravity="left"
                android:layout_margin="10dp"
                android:autoLink="web"
                android:linksClickable="true"
                android:text="https://github.com/hiteshsahu"
                android:textColor="@color/secondary_text" />

Результат от обоих подходов: -

https://github.com/hiteshsahu

1 голос
/ 01 ноября 2017

Для последней версии SDK fromHtml устарело. Используйте ниже строки

String yourtext = "<a style='text-decoration:underline' href='http://www.sample.com'> Sample Website </a>";
    if (Build.VERSION.SDK_INT >= 24) {
        textView.setText(Html.fromHtml(yourtext, Html.FROM_HTML_MODE_LEGACY));
    } else {
        textView.setText(Html.fromHtml(yourtext));
    }
...