Я хочу создать ссылку для текстового текста, например Google. Так или иначе, чтобы сделать такую ссылку. (i.e) При нажатии на слово Google он должен открыть соответствующую ссылку. Любые идеи приветствуются.
Сделать гиперссылку textview в android
Ответ 1
Попробуйте это, и дайте мне знать, что произойдет.
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));
Ответ 2
используйте android:autoLink="web"
в вашем TextView xml. Он должен автоматически конвертировать URL-адреса с помощью кликов (если они найдены в тексте)
Ответ 3
Все проверенные и работающие 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:[email protected]?Subject=Lost%20Password" target="_top">[email protected]</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>
Ответ 4
Это также можно сделать, используя свойство по умолчанию Textview
android:autoLink="email"
Ответ 5
Примечание: - 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>"));
}
В качестве альтернативы
Вы можете не хотеть программно добавлять флаг AutoLink в TextView.
Android: Автоссылка = "паутина"
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" />
Результат обоих подходов: -
Ответ 6
Для последней версии 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));
}