java - SpannableString 和 ClickableSpan 的问题
问题描述
我写了这段代码:
public class BaldrActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.a_dei_baldr);
String myString = "Click Here!";
SpannableString ss = new SpannableString(myString);
ClickableSpan clickableSpan1 = new ClickableSpan() {
@Override
public void onClick(View widget) {
Toast.makeText(BaldrActivity.this, "hello world", Toast.LENGTH_SHORT).show();
}
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setColor(Color.BLUE);
ds.setUnderlineText(false);
}
};
ss.setSpan(clickableSpan1, 6, 11, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
TextView tv = findViewById(R.id.tv_baldr1);
tv.setText(myString);
tv.setMovementMethod(LinkMovementMethod.getInstance());
}
}
但是……什么都没有改变。我的意思是,代码构建正确,应用程序没有崩溃,TextView 实际上在“单击此处!”中发生了变化,但它不可点击并且它的外观没有改变......为什么?
解决方案
看起来你正在设置字符串:
tv.setText(myString);
相反,设置您正在创建的 SpannableString:
tv.setText(ss);
推荐阅读
- swift - 使用 swift 代码将 web 视图上的 pdf 共享到其他设备
- git - Gitlab CI/CD 部署到本地服务器
- jsp - 选择 a 时 JSTL 设置变量会话
- spring-batch - 使用弹簧批处理应用流口水规则
- python - 是否可以让我的程序用 pygame 绘制一个形状,稍等片刻,然后再绘制另一个?但是,我仍然希望程序的其余部分运行
- java - 如何在随机数数组中找到素数?
- python - 访问列表中列表的元素 - python
- javascript - 有没有办法从javascript更改python脚本中变量的值?
- javascript - 使用纯 JavaScript 调整网页大小以适应浏览器窗口
- python - 如何修复“tkinter 回调中的异常”:Python 中的“不支持的操作数类型”