- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个 TextView,我在其中设置了 HTML 文本。这篇文章有很多链接。当您点击一个链接时,它并不总是触发 onClick 方法。因此,我正在尝试扩展 ClickableSpan 的区域,以便它始终响应。
int start = strBuilder.getSpanStart(span);
int end = strBuilder.getSpanEnd(span);
int flags = strBuilder.getSpanFlags(span);
final ClickableSpan clickable = new ClickableSpan() {
public void onClick(View view) {
getTouchActions(span.getURL());
}
};
strBuilder.setSpan(clickable, start, end, flags);
strBuilder.removeSpan(span);
最佳答案
CustomMovementMethod 必须扩展 ScrollingMovementMethod 并覆盖 onTouchEvent 方法。为了添加一些额外的空间,您必须在维度中定义它并在开始/结束跨度中使用它。
@Override
public boolean onTouchEvent(TextView widget, Spannable buffer,
MotionEvent event) {
int action = event.getAction();
if (action == MotionEvent.ACTION_UP ||
action == MotionEvent.ACTION_DOWN) {
int x = (int) event.getX();
int y = (int) event.getY();
x -= widget.getTotalPaddingLeft();
y -= widget.getTotalPaddingTop();
x += widget.getScrollX();
y += widget.getScrollY();
Layout layout = widget.getLayout();
int line = layout.getLineForVertical(y);
int off = layout.getOffsetForHorizontal(line, x);
int startSpan = off - context.getResources().getDimension(R.dimen.extra_space_start);
int endSpan = off + context.getResources().getDimension(R.dimen.extra_space_end);
ClickableSpan[] link = buffer.getSpans(startSpan, endSpan, ClickableSpan.class);
if (link.length != 0) {
if (action == MotionEvent.ACTION_UP) {
link[0].onClick(widget);
} else if (action == MotionEvent.ACTION_DOWN) {
Selection.setSelection(buffer,
buffer.getSpanStart(link[0]),
buffer.getSpanEnd(link[0]));
}
return true;
} else {
Selection.removeSelection(buffer);
}
}
return super.onTouchEvent(widget, buffer, event);
您可以这样调用您的自定义链接移动:
textView.setMovementMethod(new CustomLinkMovementMethod(context));
textView.setLinksClickable(true);
关于android - 扩大 ClickableSpan 的触摸区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26180129/
我有一个带有多个 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。
我是一名优秀的程序员,十分优秀!