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());
相关推荐
文丑颜不良啊1 小时前
LeetCode2161~2180题目解析
java·leetcode
文丑颜不良啊3 小时前
LeetCode2141~2160题目解析
java·leetcode
LabVIEW开发3 小时前
LabVIEW 连接板:28 个端子怎么排,优先级怎么定
java·算法·labview
天天被压力4 小时前
【A股分钟级高频数据完全手册 #07】北交所历史分钟K线接口:京市Pro版分时批量
java·人工智能·python
天天被压力4 小时前
【A股分钟级高频数据完全手册 #08】股票日、分时数据接口对比:普通分时与Pro版差异实测
java·人工智能·python
特立独行的猫A4 小时前
AI 时代,我为什么推荐用 cj-tauri 开发桌面应用
java·后端·python
金銀銅鐵4 小时前
从一个类名到一张类图:用反射自动生成 PlantUML
java·后端·uml
nice_lcj5205 小时前
Java 并发容器入门:ConcurrentHashMap、CopyOnWriteArrayList、阻塞队列
java·面试·并发编程·阻塞队列·concurrenthashmap·copyonwritearraylist
微小的鱼5 小时前
Linux的渲染与显示系统链路
android·java·linux
若亦_6 小时前
Java中关于this的三种用法
java·开发语言·intellij-idea