3

在我的 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。

我知道这很hacky。这就是为什么我想知道是否还有其他更好的方法?

我有两个想法:

  • 是否可以使用自己的编组系统实现自定义跨度?例如自定义可跨匹配标签,如:

    <div class="foo"></div>

然后我会自动检测到FooClickableSpannable扩展ClickableSpanfromHtml()

  • 我可以使用自定义 url 方案来打开我的活动,但如果有其他选择,我不确定如何强制它不显示应用程序选择器。
4

1 回答 1

1

是否可以使用自己的编组系统实现自定义跨度?

您可以创建自定义子类CharacterStyleClickableSpan?是的。

不过,我不知道“他们自己的编组系统”是什么意思。

我可以使用自定义 url 方案来打开我的活动,但如果有其他选择,我不确定如何强制它不显示应用程序选择器。

好吧,一个真正的自定义方案(例如,piel://代替http://or content://)不太可能提供选择器,因为不太可能有另一种选择。

除此之外,我过去所做的是:

  • 用于Html.fromHtml()基本转换
  • 使用getSpans()结果查找所有URLSpan对象
  • URLSpan在需要时用其他类型的自定义跨度removeSpan()替换这些对象setSpan()

另一种方法是为Html.fromHtml(). 这是我自己的 TODO 列表的较低级别的东西,以创建更可扩展的东西,处理更多的 HTML 结构等。

于 2012-10-21T12:16:22.923 回答