android - Android - clickableSpan 和 TextView 的问题
问题描述
我正在尝试在我的 TextView 中实现可点击的主题标签,如下所示:
mTextView.setMovementMethod(LinkMovementMethod.getInstance());
Spannable s = (Spannable) mTextView.getText();
CharacterStyle clickableSpan = new MyClickableSpan();
s.setSpan(clickableSpan, startIndex, endIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
这可以根据需要处理我的主题标签的 onClick,但似乎文本的另一部分也侦听 onClick 事件并且什么都不做。
我的问题是如何制作不可跨越的文本部分,将 onClick 事件委托给父视图,如下图所示。
解决方案
I figured out my question with this solution but if anyone had a better solution please let me know.
I set OnClickListener for my TextView and in the onClick event I get the parent of my TextView and check if the parent is clickable then perform parent onClick event and if not I recursively get the parent of the parent until I achieve to clickable parent. In this way, hashtags still are clickable with own actions and when clicking another part of the text the onClick event of the parent is performed.
here is the code of how I recursively find clickable parent:
private View getParentClickable(View view) {
try {
if (((View) view.getParent()).isClickable()) {
return (View) view.getParent();
} else {
return getParentClickable(((View) view.getParent()));
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
and then setOnClickListener for my view:
mTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
View parent = getParentClickable(mTextView);
if (parent != null) parent.performClick();
}
});
推荐阅读
- c - 带负数的 imul dx 在 EAX 中产生大的正数?
- python - 用逗号拆分以及如何在python中拆分引号中排除逗号
- ruby-on-rails - 是否有可能 Rails 声明 gem 应该自动更新?
- sql-server - 使用网络文件和/或远程 SQL Server 的 ssis 包涉及哪些跃点?
- php - 如何在 WP_Query 中合并 2 个数据数组?- WordPress
- image - 图像标签,如何注释没有对象但我应该有它的 xml 文件的图片,正如我在问题中解释的那样
- javascript - 如何修复超时溢出警告?
- android - 在 Android 10 中,图像 URI 中的文件路径并未真正检索到
- java - 如何根据收到的参数模拟从数据库返回的对象?
- typescript - Redux 持续存在问题 - 状态未保存在本地