Android - 为什么autolink会忽略URL的根路径?

时间:2012-05-10 18:19:08

标签: android textview

我有一个带有android:textLink =“web”的TextView。该文本包含一些URL。

例如:
http://example.com/

但是在渲染时,它会链接名称方案和域名,但会忽略根路径。

示例呈现为:
http://example.com /

为什么会这样做?如何让它正确地自动链接完全限定的网址?

编辑:此外,URL后跟fullstop或逗号:
http://example.com/

呈现为:
http://example.com/,

请注意StackExchange正确自动链接(查看此问题的来源)。

编辑:山姆,这是代码:

        <TextView android:id="@+id/open_source"
            android:text="@string/open_source"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textColor="#FFF"
            android:paddingBottom="10dp"
            android:autoLink="web" />

一些文字:

<string name="open_source">Three examples, fully qualified http://isokeys.sourceforge.net/ missing root path http://isokeys.sourceforge.net and followed with a fullstop http://isokeys.sourceforge.net/.</string>

应呈现为:
三个示例,完全限定的http://isokeys.sourceforge.net/缺少根路径http://isokeys.sourceforge.net,然后是一个完整的http://isokeys.sourceforge.net/

呈现为:
三个示例,完全限定的http://isokeys.sourceforge.net /缺少根路径http://isokeys.sourceforge.net,然后是一个完整的http://isokeys.sourceforge.net/.

1 个答案:

答案 0 :(得分:0)

我只想指出两件事:
1)当你将autoLink设置为等于“web”时,在后台Android使用android.text.util包中的工具来查找View对象文本中包含的可操作项。默认情况下,android.text.util.Linkify对什么是有效URL(基于正则表达式匹配)有自己的看法。如果你真的想使用带有斜杠的URL,最后添加你或逗号,你可以使用自己的正则表达式实现自己的MatchFilter。可以在Android开发者网站上找到here文档 2)尾部斜杠在标准URL中实际上没有任何意义,因为它用于指示资源层次结构中的位置,但如果您没有跟随斜杠,则不会遍历到另一个级别层次结构。添加逗号或句点不应该是有效的URL语法,因为这无助于在层次结构中定位资源,因此我假设Android的正则表达式匹配忽略它以防止您在尝试对链接进行操作时获得MalformedURLException