gpt4 book ai didi

Android - clickableSpan 和 TextView 的问题

转载 作者:行者123 更新时间:2023-11-30 05:12:45 30 4
gpt4 key购买 nike

我正在尝试在我的 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 事件委托(delegate)给父 View ,如下图所示。

enter image description here

最佳答案

我用这个解决方案解决了我的问题,但如果有人有更好的解决方案,请告诉我。

我为我的 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;
}

然后为我的 View 设置 OnClickListener:

mTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
View parent = getParentClickable(mTextView);
if (parent != null) parent.performClick();
}
});

关于Android - clickableSpan 和 TextView 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53459151/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com