首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为ImageSpan添加单击操作

如何为ImageSpan添加单击操作
EN

Stack Overflow用户
提问于 2011-04-07 10:58:28
回答 5查看 9.7K关注 0票数 17

我在TextEdit中设置了一个ImageSpan。我想添加一个动作--当用户点击ImageSpan时,它会弹出一个对话框,并显示大图。

我检查了SDK,ImageSpan似乎不支持onclick。有没有办法为支持镜像的ImageSpan或其他跨度启用onclick?

我检查了代码,发现有一个用ImageSpan创建的URLSpan,因为输入字符串是

但是URLSpan似乎不能工作,也没有为它创建的点击动作。有什么想法吗?

谢谢。

EN

回答 5

Stack Overflow用户

发布于 2011-06-15 20:26:04

今天,我一直在尝试解决同样的问题,并找到解决方案。要使图像可单击,需要将ClickableSpan对象附加到与图像的ImageSpan相同的范围。当您从Html.fromHtml()获得跨度对象时,您可以遍历为其指定的ImageSpan对象集并附加其他ClickableSpan对象。

如下所示:

代码语言:javascript
复制
            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);

            }               
票数 13
EN

Stack Overflow用户

发布于 2011-09-29 09:24:38

我找到了关键点。为了响应点击动作,我们不仅设置了clickablespan,还设置了edittext的‘setMovementMethod,代码如下:

代码语言:javascript
复制
EditText.setMovementMethod(LinkMovementMethod.getInstance());

这是问题所在。如果将setMovementMethod设置为LinkMovementMethod.getInstance(),则编辑文本的光标将消失。我也不知道原因

票数 11
EN

Stack Overflow用户

发布于 2011-04-07 11:34:57

首先,使该区域在属性中可单击。

接下来,添加相同的OnClickListner。

执行您的自定义操作onclick方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5575438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档