Ссылки из составного текста не работают в TexView

#android #hyperlink #textview #scrollview #spanned

#Android #гиперссылка #textview #scrollview #составные

Вопрос:

У меня есть TextView встроенный в a RelativeLayout , встроенный в a ScrollView , и я загружаю Spanned в него текстовый объект, созданный из некоторого HTML-кода. Я установил android:autoLink для атрибута значение TextView true, и я проверил в другой части приложения, что я могу нажимать на ссылки в тексте, и они приведут меня на целевой веб-сайт. Разница лишь в том, что на этот раз TextView является дочерним элементом a ScrollView . Это портит android:autoLink процесс или я действительно что-то здесь упускаю?

XML-код:

 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="fill_parent" android:layout_width="fill_parent"
    android:padding="10dp" android:background="#FFF">
    <RelativeLayout android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:id="@ id/RLNewsItem">

        <TextView android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:layout_alignParentLeft="true"
            android:id="@ id/TVText" android:textColor="#000"
            android:layout_below="@ id/TVTitle" android:linksClickable="true"
            android:autoLink="web|email|map"></TextView>
        </RelativeLayout>
    </ScrollView>
  

Java-код:

 Spanned newsText = Html.fromHtml(htmlsource, this, null);
text.setText(newsText);
  

Ответ №1:

Попробуйте этот код в String.xml :

 <string-array name="description">
 <item> <Data> <![CDATA[ Check this <u>Redirect to Next Activity</u> ]]></Data> </item>
  

Код в классе Java:

      ArrayList<String> title_list = new ArrayList<String>();
     String[] description_Array = getResources().getStringArray(R.array.description);
     String categoryAndDesc = null;
     for(String cad : description_Array) {
        categoryAndDesc = cad;
        title_list.add(categoryAndDesc);
    }
    CharSequence sequence = Html.fromHtml(categoryAndDesc);
    seperator_view.setText(strBuilder);
    seperator_view.setMovementMethod(LinkMovementMethod.getInstance());
  

Комментарии:

1. EditText.setMovementMethod(LinkMovementMethod.getInstance()); сработало для меня, спасибо! Тем не менее, я не использовал остальную часть ответа, но спасибо за эту последнюю строку 🙂