Korzystanie z Linkify.addLinks łączy się z Html.fromHtml

mamTextView pobiera to zestaw danych, wywołując to:

tv.setText(Html.fromHtml(myText));

CiągmyText zawiera częściowo sformatowane dane HTML. Na przykład może mieć znaczniki czcionek, ale nie ma żadnych linków URL sformatowanych przy użyciu<a href=...> tagi. Miałem nadzieję użyćLinkify.addLinks(...) aby to zrobić, ponieważ mój tekst może zawierać inne rodzaje linków, które Linkify przekształci dla mnie odpowiednio. Napisałem więc mój kod, aby wyglądać tak:

String myText = "<font color=\"red\">Red text</font> and Url: www.google.com";
tv.setText(Html.fromHtml(myText));
Linkify.addLinks(tv, Linkify.ALL);
tv.setMovementMethod(LinkMovementMethod.getInstance());

To nie działa poprawnie. Oznacza to, że przetwarza znaczniki czcionek, ale Linkify nie konwertuje adresów URL naUrlSpan prawidłowo.

Alternatywnie, jeśli wywołam setText () bez Html.fromHtml (..), Linkify działa, ale potem tracę cały tekst sformatowany z tagów czcionek HTML. Wydaje się, że oboje są w konflikcie, a ja mogę mieć tylko jedno lub drugie.

Oto interesująca część, której nie rozumiem. Jeśli usuwam kod Linkify z java i idę do mojego układu xml i kładę następujące linie tam, wszystko wydaje się pracować (Linkify i fromHtml oba kończą się bawić się miło razem ... jakoś)

<TextView
    ... 
    android:autoLink="all"
    android:linksClickable="true"
    ...
/>

Czy ktoś może mi wyjaśnić, dlaczego to wszystko działa?

Przejrzałem kod źródłowy TextViewsetMovementMethod() i ostatecznie kończy się powołaniem:

setFocusable(true);
setClickable(true);
setLongClickable(true);

To powinno teoretycznie sprawić, że wszystko będzie działać i zachowywać się tak samo jak kod układu xml. Próbowałem zmienić kolejność połączeńLinkify.addLinks(..) przedsetText(Html.fromHtml(..)) w kodzie java, ale to nie miało znaczenia.

Wszelkie pomysły na to, dlaczego łączenie Linkify.addLinks () i Html.fromHtml () w Javie spowodowałoby to zachowanie ... ale nie w układzie xml?

questionAnswers(3)

yourAnswerToTheQuestion