我在TextEdit中设置了ImageSpan.我想添加动作 - 当用户点击ImageSpan时,它会弹出一个对话框并显示大图像.
我检查了SDK,似乎ImageSpan不支持onclick.反正是否支持ImageSpan或支持Image的其他Span的onclick?
我检查了代码,发现有一个用ImageSpan创建的URLSpan,因为输入字符串是
但似乎URLSpan不起作用,并且没有为它创建单击操作.任何的想法?
谢谢.
bas*_*asv 13
我一直在努力解决同样的问题并找到解决方案.要使图像可单击,您需要将ClickableSpan对象附加到与ImageSpan相同的图像范围.当您从Html.fromHtml()获取Spanned对象时,您可以浏览为其分配的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);
}
Run Code Online (Sandbox Code Playgroud)
小智 10
我找到了关键点.为了响应点击动作,我们不仅设置了clickablespan,还设置了edittext'setMovementMethod,代码如下:
EditText.setMovementMethod(LinkMovementMethod.getInstance());
Run Code Online (Sandbox Code Playgroud)
这是问题所在.如果设置setMovementMethod为LinkMovementMethod.getInstance(),则edittext的光标将消失.我不知道为什么
| 归档时间: |
|
| 查看次数: |
9000 次 |
| 最近记录: |