gpt4 book ai didi

android - 如何使用 ClickableSpan,但忽略来自 TextView 的点击

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:01:18 25 4
gpt4 key购买 nike

以下代码展示了我如何使用自定义 ClickableSpan 和选择器应用按下状态。但是,只要我按下 TextView 上的任何地方,就会应用按下状态,而不仅仅是 ClickableSpan。我该如何阻止它?

注意:它不会调用 onClick,但会从选择器应用 state_pressed 。我希望它两者都不做。

MyView.java

SpannableString spanned = new SpannableString("click here");
spannable.setSpan(new MyClickableSpan() {
@Override
public void onClick(View widget) {
doSomething();
}
}, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(spanned);
textView.setMovementMethod(LinkMovementMethod.getInstance());

MyClickableSpan.java

public abstract class MyClickableSpan extends ClickableSpan {

@Override
public abstract void onClick(View view);

@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(false);
}
}

TextView

<TextView
android:id="@+id/my_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@android:color/white"
android:textColorLink="@color/my_selector" />

my_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="@color/my_color_pressed" />
<item android:color="@color/my_color" />
</selector>

编辑备注:添加TextView代码

最佳答案

下一个示例如您所料:

    Spannable span = SpannableStringBuilder.valueOf("Hello clickable span!");
span.setSpan(new MyClickableSpan(), 6, 15, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mTextView.setText(span);
mTextView.setMovementMethod(LinkMovementMethod.getInstance());

现在应用跨度: enter image description here

这里的 MyClickableSpan() 只显示 Snackbar 以指示“点击”已被处理:

class MyClickableSpan extends ClickableSpan {

@Override
public void onClick(View widget) {
Snackbar.make(getWindow().findViewById(android.R.id.content), "Click on span!", Snackbar.LENGTH_LONG).show();
}
}

我们有:

  1. 在“跨区”文本之外单击/点击将不会执行任何操作
  2. 点击/点击文本的“跨区”部分将显示 Snackbar

enter image description here

就是这样。如果您需要任何其他信息,请告诉我。

关于android - 如何使用 ClickableSpan,但忽略来自 TextView 的点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37033139/

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