/ / Android: textview гіперпосилання - android, гіперпосилання, textview

Android: текстовий гіперпосилання - android, гіперпосилання, текстовий перегляд

Я знаю, що якщо ви покладете посилання на перегляд тексту, воно буде працювати, але якщо я хочу показати, наприклад:

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

Я потрапив на ту ж проблему і нарешті знайшов робоче рішення.

  1. у файлі string.xml визначте:

    <string name="textWithHtml">The URL link is &lt;a href="http://www.google.com">Google&lt;/a></string>
    

Замініть на "<" менше символу символом, який уникнув HTML.

  1. У коді Java:

    String text = v.getContext().getString(R.string.textWithHtml);
    textView.setText(Html.fromHtml(text));
    textView.setMovementMethod(LinkMovementMethod.getInstance());
    

І TextBox правильно відобразить текст за допомогою якорного посилання, яке можна натиснути