Android 开发问题:ClickableSpan 的点击事件没有生效

java 复制代码
SpannableString spannableString = new SpannableString("Hello Android");

spannableString.setSpan(
        new ClickableSpan() {
            @Override
            public void onClick(@NonNull View view) {
                Toast.makeText(SpannableStringTestActivity.this, "点击了 Hello", Toast.LENGTH_SHORT).show();
            }
        },
        0, 5,
        Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
);

TextView tvContent = findViewById(R.id.tv_content);
tvContent.setText(spannableString);
  • 在 Android 开发中,执行上述代码,ClickableSpan 的点击事件没有生效
问题原因
  • TextView 默认不会处理 ClickableSpan 的点击事件,需要显式启用
处理策略
  • 设置 LinkMovementMethod,TextView 才会拦截点击事件,并分发给对应的 ClickableSpan
java 复制代码
// 关键

tvContent.setMovementMethod(LinkMovementMethod.getInstance());
相关推荐
嘿嘿-668 小时前
Windows 一键使用 GPT-6 Astra:Codex CLI 配置教程
java·人工智能·windows·gpt·chatgpt·web
策案案案10 小时前
YOLO: 将AI Agents嵌入到IntelliJ IDEA
java·大数据·人工智能·笔记·yolo·microsoft·intellij-idea
辰烨chenye11 小时前
LeetCode Hot 100 题解 · 堆篇
java·算法·leetcode
shehuiyuelaiyuehao11 小时前
算法29,前缀和,除自身以外的数组的乘积
java·数据结构·算法
小刘在重生~12 小时前
Java常用类|String类详解 + BigDecimal精准计算(含面试题)
java·开发语言·python
随遇而安zx12 小时前
【多线程】---JMM 与 volatile 深度解析
java·多线程
邪修king12 小时前
Re:Linux系统篇(十九):进程篇(八): 进程等待详解:wait/waitpid,僵尸进程到底该如何回收
java·开发语言
啵啵啵鱼12 小时前
DS-顺序表
java·数据结构·笔记·后端·链表·obsidian
TinyMemory13 小时前
Java 面向对象核心入门(七):方法重载 Overload,同一个方法名能干不一样的活
java·面向对象·overload·方法重载