这似乎是一个微不足道的问题,但是我有点难过。我想使用Html.fromHtml()加载HTML字符串,并且字符串中的任何链接都可以在浏览器中单击并打开。
基本示例:
textView.setText(Html.fromHtml("<a href=\"http://www.google.com\">This is a link</a>"));
使用此代码段,文本的格式就像是一个链接(蓝色,带下划线),但它不可点击。我尝试过Linkify,但它似乎只适用于非基于HTML的链接。
有什么建议吗?
答案 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);
}
}