我在TextEdit中设置了一个ImageSpan。我想添加一个动作--当用户点击ImageSpan时,它会弹出一个对话框,并显示大图。
我检查了SDK,ImageSpan似乎不支持onclick。有没有办法为支持镜像的ImageSpan或其他跨度启用onclick?
我检查了代码,发现有一个用ImageSpan创建的URLSpan,因为输入字符串是
但是URLSpan似乎不能工作,也没有为它创建的点击动作。有什么想法吗?
谢谢。
发布于 2011-06-15 20:26:04
今天,我一直在尝试解决同样的问题,并找到解决方案。要使图像可单击,需要将ClickableSpan对象附加到与图像的ImageSpan相同的范围。当您从Html.fromHtml()获得跨度对象时,您可以遍历为其指定的ImageSpan对象集并附加其他ClickableSpan对象。
如下所示:
ImageSpan[] image_spans = s.getSpans(0, s.length(), ImageSpan.class);
for (ImageSpan span : image_spans) {
final String image_src = span.getSource();
final int start = s.getSpanStart(span);
final int end = s.getSpanEnd(span);
ClickableSpan click_span = new ClickableSpan() {
@Override
public void onClick(View widget) {
Toast.makeText(HtmlImagesTestActivity.this,
"Image Clicked " + image_src,
Toast.LENGTH_SHORT).show();
}
};
ClickableSpan[] click_spans = s.getSpans(start, end, ClickableSpan.class);
if(click_spans.length != 0) {
// remove all click spans
for(ClickableSpan c_span : click_spans) {
s.removeSpan(c_span);
}
}
s.setSpan(click_span, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
} 发布于 2011-09-29 09:24:38
我找到了关键点。为了响应点击动作,我们不仅设置了clickablespan,还设置了edittext的‘setMovementMethod,代码如下:
EditText.setMovementMethod(LinkMovementMethod.getInstance());这是问题所在。如果将setMovementMethod设置为LinkMovementMethod.getInstance(),则编辑文本的光标将消失。我也不知道原因
发布于 2011-04-07 11:34:57
首先,使该区域在属性中可单击。
接下来,添加相同的OnClickListner。
执行您的自定义操作onclick方法。
https://stackoverflow.com/questions/5575438
复制相似问题