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());
相关推荐
evans在进步6 小时前
LeetCode 198:打家劫舍——Java 动态规划详解
java·leetcode·动态规划
2601_963870226 小时前
【计算机毕业设计】基于Spring Boot的考研信息交流平台的设计与实现
java·spring boot·后端
大模型丫丫7 小时前
Spring Boot 入门指南:从零开始构建你的第一个应用
java·spring boot·后端
拾光Ծ7 小时前
Linux五种I/O模型与fcntl非阻塞控制
java·linux·服务器·i/o模型
半旧5187 小时前
【Java Web02】WEB服务器内部实现技术揭秘
java·服务器·前端
gis开发之家7 小时前
日志怎么打才专业?Spring Boot 4 日志体系与 Logback 配置(生产级实战)
java·spring boot·后端·logback
SaaS发言人7 小时前
渠道数字化解决方案横评:谁更懂快消
java·大数据·人工智能
JL157 小时前
Java并发编程面试全攻略-从synchronized到AQS底层原理
java·开发语言·面试·并发编程
ZC跨境爬虫7 小时前
LeetCode 119. 杨辉三角 II(原地更新优化详解 + Java Python 实现)
java·python·leetcode