如何在HTML中点击链接? (机器人)

时间:2010-11-29 11:08:12

标签: html android hyperlink

这似乎是一个微不足道的问题,但是我有点难过。我想使用Html.fromHtml()加载HTML字符串,并且字符串中的任何链接都可以在浏览器中单击并打开。

基本示例:

textView.setText(Html.fromHtml("<a href=\"http://www.google.com\">This is a link</a>"));

使用此代码段,文本的格式就像是一个链接(蓝色,带下划线),但它不可点击。我尝试过Linkify,但它似乎只适用于非基于HTML的链接。

有什么建议吗?

5 个答案:

答案 0 :(得分:129)

正如我所假设的那样,解决方案很简单:

textView.setText(Html.fromHtml("<a href=\"http://www.google.com\">This is a link</a>"));
textView.setMovementMethod(LinkMovementMethod.getInstance());

第二行以某种方式激活链接行为,虽然我不太确定如何。在Google Code解决了同样的问题。

答案 1 :(得分:20)

正如其他答案中所提到的,前进的方法是使用:

xtView.setText(Html.fromHtml("<a href=\"http://www.google.com\">This is a link</a>"));
textView.setMovementMethod(LinkMovementMethod.getInstance());

但是,如果你设置了任何android:autoLink值,这不会起作用,而不仅仅是其他评论似乎建议的'web'。这意味着您可以使用此解决方案来链接URL,但代价是禁用/取消链接电话,电子邮件和地图。

答案 2 :(得分:5)

LinkMovementMethod的javadoc说它

  

支持点击与DPad Center或Enter的链接。

因此以这种方式运作是有意义的。

并且确认,4.2.2的作品就像魅力一样只有

textView.setMovementMethod(LinkMovementMethod.getInstance());

答案 3 :(得分:3)

应该是这样的:

textView.setText(Html.fromHtml("<a href=\"http://www.google.com\">This is a link</a>"));
textView.setAutoLinkMask(Linkify.WEB_URLS);
textView.setLinksClickable(true);
XML中的

应该是

<TextView
    android:id="@+id/txtview"
    android:autoLink="web"
    android:linksClickable="true"
    />

答案 4 :(得分:0)

public abstract class Shader {

private int shader;
private int geometry;
private int vertex;
private int fragment;

public Shader()
{
    shader = GL20.glCreateProgram();
    if (shader == 0){
        System.err.println("Could not find valid memory location for shader");
        System.exit(1);
    }
}

public void start()
{
    GL20.glUseProgram(shader);
}

public void stop()
{
    GL20.glUseProgram(0);
}

protected abstract void bindAttributes();

protected void bindAttribute(int attrib, String name)
{
    GL20.glBindAttribLocation(shader, attrib, name);
}

public void finalize()
{
    bindAttributes();
    GL20.glLinkProgram(shader);
    GL20.glValidateProgram(shader);
}

public void loadVertex(String fileName)
{
    vertex = ResourceLoader.generateShader(fileName, GL20.GL_VERTEX_SHADER);
    GL20.glAttachShader(shader, vertex);
}

public void loadFragment(String fileName)
{
    fragment = ResourceLoader.generateShader(fileName, GL20.GL_FRAGMENT_SHADER);
    GL20.glAttachShader(shader, fragment);
}

public void loadGeometry(String fileName)
{
    geometry = ResourceLoader.generateShader(fileName, GL32.GL_GEOMETRY_SHADER);
    GL20.glAttachShader(shader, geometry);
}

}