Я знаю, що якщо ви покладете посилання на перегляд тексту, воно буде працювати, але якщо я хочу показати, наприклад:
google переповнення стека
а не все посилання (лише тег) Як зробити ці посилання доступними для перегляду?
Відповіді:
58 за відповідь № 1У вас може бути два окремих TextView, і ви можете відповідно їх вирівняти у своєму макеті:
Text1.setText(
Html.fromHtml(
"<a href="http://www.google.com">google</a> "));
Text1.setMovementMethod(LinkMovementMethod.getInstance());
Text2.setText(
Html.fromHtml(
"<a href="http://www.stackoverflow.com">stackoverflow</a> "));
Text2.setMovementMethod(LinkMovementMethod.getInstance());
Тоді якщо ви хочете зняти "підкреслення посилання". Створіть клас:
public class URLSpanNoUnderline extends URLSpan {
public URLSpanNoUnderline(String url) {
super(url);
}
@Override public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(false);
}
}
Потім додайте цей метод у свій основний клас діяльності, де у вас є TextViews
private void stripUnderlines(TextView textView) {
Spannable s = new SpannableString(textView.getText());
URLSpan[] spans = s.getSpans(0, s.length(), URLSpan.class);
for (URLSpan span: spans) {
int start = s.getSpanStart(span);
int end = s.getSpanEnd(span);
s.removeSpan(span);
span = new URLSpanNoUnderline(span.getURL());
s.setSpan(span, start, end, 0);
}
textView.setText(s);
}
А потім просто зателефонуйте до цього після ініціалізації TextViews (у своєму onCreate):
stripUnderlines(Text1);
stripUnderlines(Text2);
46 за відповідь № 2
TextView t2 = (TextView) findViewById(R.id.textviewidname);
t2.setMovementMethod(LinkMovementMethod.getInstance());
і
<string name="google_stackoverflow"><a href="https://stackoverflow.com/questions/9852184/android-textview-hyperlink?rq=1">google stack overflow</a></string>
Посилання є "Android: гіперпосилання для перегляду тексту"
і тег - "переповнення стека google"
Визначте перший код коду у вашому Java, а другий блок коду у вашому файлі strings.xml. Також не забудьте вказати ідентифікатор textView з макета сторінки у вашій Java.
12 для відповіді № 3
Дуже простий спосіб зробити це ---
У вашій діяльності--
TextView tv = (TextView) findViewById(R.id.site);
tv.setText(Html.fromHtml("<a href=http://www.stackoverflow.com> STACK OVERFLOW "));
tv.setMovementMethod(LinkMovementMethod.getInstance());
Тоді ви отримаєте лише Тег, а не все посилання ..
Сподіваюся, що це допоможе вам ...
8 для відповіді № 4
android:autoLink="web"
просто працює, якщо у вас є повні посилання у вашому HTML. Далі буде виділено синім кольором та натисканням кнопки:
5 для відповіді № 5
це повинно працювати.
TextView t2 = (TextView) findViewById(R.id.text2);
t2.setMovementMethod(LinkMovementMethod.getInstance());
and
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="@string/txtCredits"
android:id="@+id/text2"
android:layout_centerInParent="true"
android:layout_marginTop="20dp"></TextView>
2 для відповіді № 6
Це моя робоча реалізація
private void showMessage()
{
lblMessage.setText("");
List<String> messages = db.getAllGCMMessages();
for (int k = messages.size() - 1; k >= 0; --k)
{
String message = messages.get(k).toString();
lblMessage.append(message + "nn");
}
Linkify.addLinks(lblMessage, Linkify.ALL);
}
і щоб змінити колір гіперпосилань, я змінив свій xml для перегляду тексту -
android:textColorLink="#69463d"
2 для відповіді № 7
Я потрапив на ту ж проблему і нарешті знайшов робоче рішення.
у файлі string.xml визначте:
<string name="textWithHtml">The URL link is <a href="http://www.google.com">Google</a></string>
Замініть на "<" менше символу символом, який уникнув HTML.
У коді Java:
String text = v.getContext().getString(R.string.textWithHtml); textView.setText(Html.fromHtml(text)); textView.setMovementMethod(LinkMovementMethod.getInstance());
І TextBox правильно відобразить текст за допомогою якорного посилання, яке можна натиснути