小编wna*_*fee的帖子

使用Linkify.addLinks与Html.fromHtml结合使用

我有一个TextView通过调用它得到它的数据集:

tv.setText(Html.fromHtml(myText));
Run Code Online (Sandbox Code Playgroud)

该字符串myText包含部分格式化的html数据.例如,它可能有字体标记,但没有使用<a href=...>标记格式化的任何url链接.我希望使用Linkify.addLinks(...)这样做,因为我的文本可能包含Linkify将为我适当转换的其他类型的链接.所以我写了我的代码看起来像这样:

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());
Run Code Online (Sandbox Code Playgroud)

这不能正常工作.这意味着它处理字体标记但Linkify不会UrlSpan正确转换网址.

或者,如果我在没有Html.fromHtml(..)的情况下调用setText(),Linkify可以工作,但是我会丢失所有从html字体标签格式化的文本.不知怎的,他们似乎都是冲突的,我只能有一个或另一个.

现在这是我不理解的有趣部分.如果我从java中删除Linkify代码并转到我的布局xml并在其中放置以下行,所有似乎都在工作(Linkify和fromHtml最终一起玩得很好......不知何故)

<TextView
    ... 
    android:autoLink="all"
    android:linksClickable="true"
    ...
/>
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释为什么会让一切正常吗?

我查看了TextView的源代码,setMovementMethod()最终调用:

setFocusable(true);
setClickable(true);
setLongClickable(true);
Run Code Online (Sandbox Code Playgroud)

理论上,这应该使一切工作和行为与xml布局代码相同.我尝试在java代码中切换Linkify.addLinks(..)之前调用的顺序setText(Html.fromHtml(..)),但这并没有什么区别.

关于为什么在java中组合Linkify.addLinks()和Html.fromHtml()的任何想法会导致这种行为......但不是在xml布局中?

html java android linkify

9
推荐指数
1
解决办法
2697
查看次数

标签 统计

android ×1

html ×1

java ×1

linkify ×1