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