我正在尝试在 TextView 中实现可点击的主题标签,如下所示:
mTextView.setMovementMethod(LinkMovementMethod.getInstance());
Spannable s = (Spannable) mTextView.getText();
CharacterStyle clickableSpan = new MyClickableSpan();
s.setSpan(clickableSpan, startIndex, endIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
Run Code Online (Sandbox Code Playgroud)
这按照我想要的方式处理我的主题标签的 onClick,但似乎文本的其他部分也侦听 onClick 事件并且不执行任何操作。
我的问题是如何制作不可跨越的文本部分,将 onClick 事件委托给父视图,如下图所示。
我用这个解决方案解决了我的问题,但如果有人有更好的解决方案,请告诉我。
我为我的 TextView 设置 OnClickListener ,并在 onClick 事件中获取 TextView 的父级,并检查父级是否可单击,然后执行父级 onClick 事件,如果不是,我递归获取父级的父级,直到实现可单击父级。通过这种方式,主题标签仍然可以通过自己的操作进行点击,并且当点击文本的另一部分时,父级的 onClick 事件将被执行。
这是我如何递归查找可点击父级的代码:
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;
}
Run Code Online (Sandbox Code Playgroud)
然后为我的视图设置 OnClickListener :
mTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
View parent = getParentClickable(mTextView);
if (parent != null) parent.performClick();
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3270 次 |
| 最近记录: |