- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
以下代码展示了我如何使用自定义 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());
这里的 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();
}
}
我们有:
就是这样。如果您需要任何其他信息,请告诉我。
关于android - 如何使用 ClickableSpan,但忽略来自 TextView 的点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37033139/
我有一个带有多个 ClickableSpans 的 TextView。当按下 ClickableSpan 时,我希望它更改其文本的颜色。 我尝试将颜色状态列表设置为 TextView 的 textCo
我有一个 TextView,里面有多个 ClickableSpan。当按下 ClickableSpan 时,我希望它改变其文本的颜色。 我尝试将颜色状态列表设置为 TextView 的 textCol
我是 Android 开发的新手。我一直收到此错误,因为我试图添加打开弹出窗口的选项(onClick())。 看起来错误在第 29->36 行,因为一旦我注释掉该部分,我就不会收到此错误。 有人知道发
我正在尝试将数据存储在 ClickableSpan 中,就像它可以通过 setTag() 和其他类型的元素来完成一样。 我在 stackoverflow 中读到了这个答案: SpannableStri
我在 TextView 上使用了 ClickableSpan。添加跨度后,应用它的文本颜色也发生了变化。 检查 SO 问题,我看到的是点击后颜色变了。在我的例子中,颜色在渲染 View 时已经不同了。
我在布局中有一个 TextView。就是这么简单。我在布局中放置了一个 OnClickListener,TextView 的某些部分设置为 ClickableSpan。我希望 ClickableSpa
我有一个 SpannableString 设置为我的 TextView 的文本,它位于另一个具有点击处理程序的 View 中。我的文本中有 ClickableSpan,您说得对,可以点击。 我的问题是
我有下一个代码用于添加 EditText 图像: fun bind() { val ssb = SpannableStringBuilder(".")
我有一个 TextView,其中所有单词都可以单独点击。我想从每一个没有风格的词开始。单击一个词后,该词应变为并保持下划线。我能够清除默认下划线,但点击后没有任何反应。 (我正在捕获甚至处理点击,但我
我有一个 TextView,其中每个单词都是一个 ClickableSpan。单击时,该词变为粗体,该词的字典定义显示在另一个TextView 中。在我使 TextView 中的文本可选择之前,该应用
我正在创建一个 ClickableSpan,它可以正确显示正确的文字加下划线。但是,点击没有注册。你知道我做错了什么吗??? 谢谢,维克托 这是代码 fragment : view.setText("
我有一个 TextView,其中每个单词都是一个 ClickableSpan(实际上是 ClickableSpan 的自定义子类)。当一个词被触摸时,它应该以粗体显示。 如果我在 TextView 上
我有一个 TextView,我在其中设置了 HTML 文本。这篇文章有很多链接。当您点击一个链接时,它并不总是触发 onClick 方法。因此,我正在尝试扩展 ClickableSpan 的区域,以便
我正在处理 TextView 中的 ClickableSpan,并且我正在尝试获取单击范围的文本。这是我的代码。 // this is the text we'll be operating on S
我必须在段落文本中嵌入可点击的文本,clickablespan 可以做到。但是,我可以更改这些样式,而不是使用默认的焦点/按下/取消焦点样式吗?比如对焦时背景色为蓝色,文字颜色为白色,未对焦时背景色为
我有一个带有 ClickableSpan 的 SpannableString,如下所示 for (int i = 0; i < items.size(); i++) { fin
我正在创建一个 ClickableSpan,它可以正常显示适当的文字加下划线。但是,点击未注册。你知道我做错了吗??? 谢谢,维克多 这里是代码 fragment : view.setText("Th
我正在尝试在我的 TextView 中实现可点击的主题标签,如下所示: mTextView.setMovementMethod(LinkMovementMethod.getInstance()); S
在 stackoverflow 上有类似的问题,但是他们回答的是“如何突出显示 onclick” 而不是 ontouch 有没有办法(例如)设置 clickablespan ontouch 的背景颜色
这个问题困扰我很久了。我得到的是一个简单的字符串 "This is a link and this is another link"。我想让两个“链接”字词都可以点击,并在浏览器中打开不同的 URL。
我是一名优秀的程序员,十分优秀!