在我的Android应用中,我有链接的文字视图。他们每个人都在切换一个特定的事件(打开浏览器,开始另一个活动等等)。为了解决这个问题,我没有找到比这样做更好的解决方案:
hi there!, this is <u>a action</u> and this is <b>another action</b>. This third one goes to <a href="http://google.com>Google</a>
然后,在显示textview时,我将每个链接转换为带有SpannableStringBuilder的自定义spannable。
我知道这很黑。这就是为什么我想知道是否还有其他更好的方法?
我有两个想法:
是否可以使用自己的编组系统实现自定义spannable?例如,自定义的spannable匹配标记,如:
<div class="foo"></div>
然后,FooClickableSpannable
ClickableSpan
fromHtml()
{}}
答案 0 :(得分:1)
是否可以使用自己的编组系统实现自定义spannable?
您可以创建CharacterStyle
的自定义子类,尤其是ClickableSpan
吗?是。
我不知道“他们自己的编组系统”是什么意思。
我可以使用自定义网址方案来打开我的活动,但如果还有其他选择,我不知道如何强制它不显示应用选择器。
嗯,真正的自定义方案(例如,piel://
而不是http://
或content://
)不太可能提供选择器,因为不太可能有其他选择。< / p>
除此之外,我过去所做的是:
Html.fromHtml()
进行基本转换getSpans()
查找所有URLSpan
个对象URLSpan
和removeSpan()
setSpan()
个对象替换为需要的其他类型的自定义范围
另一种方法是为Html.fromHtml()
创建一个类似于工作的方法。这是围绕我自己的TODO列表的较低级别,创建更具可扩展性,处理更多HTML构造等的东西。