如何为ImageSpan添加点击操作

我在TextEdit中设置了一个ImageSpan。 我想要添加的动作 – 当用户点击ImageSpan,它会popup一个对话框,并显示大图像。

我检查了SDK,似乎ImageSpan不支持onclick。 无论如何,启用支持Image的ImageSpan或其他Span的onclick?

我检查了代码,发现有一个由ImageSpan创build的URLSpan,因为inputstring是

但似乎URLSpan不起作用,并没有创build它的点击动作。 任何想法?

谢谢。

Solutions Collecting From Web of "如何为ImageSpan添加点击操作"

我一直在试图解决同样的问题,find解决办法。 为了使图像可点击,您需要将一个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); } 

我已经find了关键点,为了响应点击动作,我们不仅设置了clickablespan,还设置了edittext'setMovementMethod,代码如下:

 EditText.setMovementMethod(LinkMovementMethod.getInstance()); 

这是问题。 如果将setMovementMethod设置为LinkMovementMethod.getInstance() ,edittext的光标将会消失。 我不知道为什么

首先,使区域可以从属性点击。
接下来,添加OnClickListner相同。

做你的自定义操作onclick方法。

您可能希望使用ClickableSpan签出并将TextView附加到LinkMovementMethod并覆盖它的onTouchEvent等….

希望有所帮助

根据上面的miaohua1982的回答,很明显,在将移动方法设置为LinkMovement方法之后,光标被禁用。 我面临类似的问题,在行动模式(这将出现在TextPress的LongPress)被取消,我没有得到任何行动items.I已经通过扩展LinkMovementMethod并覆盖如下方法解决了这个问题。 我希望即使在editext它解决了这个问题。

 class MyMovementMethod extends LinkMovementMethod{ @Override public boolean canSelectArbitrarily() { return true; } }