Leg*_*end 23

这是使用TextView的autoLink属性完成的.花了我一些时间来挖掘文档,所以把它放在一个例子中以防其他人正在寻找它:

我们假设您将listview绑定到自定义适配器.在这种情况下,以下代码将进入getView调用:

码:

textcontent.setText(Html.fromHtml(item.get_text()));
textcontent.setAutoLinkMask(Linkify.WEB_URLS);
Run Code Online (Sandbox Code Playgroud)

只需将链接放在传递给setText调用的文本中即可.

XML:

<TextView
                android:id="@+id/txtview"
                android:autoLink="web"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:text="put your link here"/>
Run Code Online (Sandbox Code Playgroud)

希望有帮助......


emm*_*mby 19

如果您的文本已经是HTML格式,那么最好的办法是:

TextView textcontent = (TextView) findViewById(...);
textcontent.setMovementMethod(LinkMovementMethod.getInstance());

String text = "<a href="http://www.stackoverflow.com">stackoverflow.com</a>";
textcontent.setText(Html.fromHtml(text));
Run Code Online (Sandbox Code Playgroud)

这将导致在文本视图中可以单击任何链接标记.或者,您可以android:autoLink="web"按照Legend的建议使用,但这具有以下副作用:a)链接未包含在锚标记中的网址,以及b)可能缺少网址或链接不是网址的内容.如果你想要autoLink的智能,那么你应该使用它,但如果你想要的只是链接已经存在的标签,你最好使用它setMovementMethod().

有关详细信息,请参阅此错误报告:http: //code.google.com/p/android/issues/detail?id = 2219

  • 嗯,似乎添加了textcontent.setMovementMethod(LinkMovementMethod.getInstance()); 使得textview文本部分的点击不再传递到下面的列表视图. (3认同)

Bee*_* Me 11

嗯,似乎添加了textcontent.setMovementMethod(LinkMovementMethod.getInstance()); 使得textview文本部分的点击不再传递到下面的列表视图.

我在第3414期注释27找到了一个简单的解决方法:

解决此问题的简单方法是调用"setDescendantFocusability(FOCUS_BLOCK_DESCENDANTS);" 在listView视图中添加它们.您将能够选择行,单击行并单击子复选框和按钮.

虽然需要一些铸件,但它对我来说非常合适:

View v;
((ViewGroup)v).setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
Run Code Online (Sandbox Code Playgroud)