无法在TextView中插入自定义链接

时间:2011-11-29 18:32:03

标签: android hyperlink textview linkify

我正在尝试插入TextView的链接,以使它们开始一个新的活动。我为我的Utils课写了一个方法来做到这一点:

public static final String tagPattern = "#([^ ]+)";
public static final String tagReplace = "<a href=\"org.openihs.seendroid://display/tag/$1/\">#$1</a>";
public static final String userPattern = "@([^ ]+)";
public static final String userReplace = "<a href=\"org.openihs.seendroid://display/user/$1/\">@$1</a>";
static public void linkify(TextView view) {
    String text = view.getText().toString();
    text = text.replaceAll(Utils.tagPattern, Utils.tagReplace);
    text = text.replaceAll(Utils.userPattern, Utils.userReplace);
    view.setMovementMethod(LinkMovementMethod.getInstance());
    view.setText(Html.fromHtml(text));
    Log.d("SeenDroid", text);
    Linkify.addLinks(view, Linkify.ALL);
}

示例输出(对logcat)是:

foo <a href="org.openihs.seendroid://display/tag/bar/">#bar</a> baz http://google.fr/

真实用户界面将http://google.fr/作为链接(预期行为),但#bar作为普通文本(意外行为)。

TextView位于ListView中。

有什么想法解决这个问题吗?

此致 ProgVal

2 个答案:

答案 0 :(得分:0)

不要替换。 Html.fromHtml已经正确处理了代码。

答案 1 :(得分:0)

Linkify的工作方式与您尝试使用它的方式略有不同。

public static final String AUTHORITY = "your_package.your_content_provider";
public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/tag/");
Pattern pattern = Pattern.compile(tagPattern);
Linkify.addLinks(view, pattern, CONTENT_URI.toString());

CONTENT_URI指的是您在清单中注册的ContentProvider