嗨,我有一个句子(TextView),我想点击某个单词,我想在 Toast 中显示这个单词,例如,我想设置 OnClickLister 以便能够抓取一个单词,它被点击了,而不是整个句子
例如
句子 TextView --- 我喜欢 stackoverflow
点击“爱”----->举杯“爱”这个词
我只是想出了创建许多 TextViews 的想法,并为每个 TextViews 设置侦听器......这不是很好......你有任何想法如何实现这个吗?
也许有一些我不知道的文字处理库?
嗨,我有一个句子(TextView),我想点击某个单词,我想在 Toast 中显示这个单词,例如,我想设置 OnClickLister 以便能够抓取一个单词,它被点击了,而不是整个句子
例如
句子 TextView --- 我喜欢 stackoverflow
点击“爱”----->举杯“爱”这个词
我只是想出了创建许多 TextViews 的想法,并为每个 TextViews 设置侦听器......这不是很好......你有任何想法如何实现这个吗?
也许有一些我不知道的文字处理库?
见上面的问题。我认为它可以解决你的问题。您不需要为每个单词设置一个文本视图。对整个句子有一个文本视图。然后抓住这个词点击。我认为这是 wat 上面解释的。
请让我知道这是否有帮助。
为每个单词设置 ClickableSpan 的另一种解决方案(正如@LakshmiNarayanan 的答案中建议的那样)是OnTouchListener
在TextView
. 然后在onTouch
方法中你可以像这样得到被触摸的字符的偏移量:
Layout layout = this.getLayout();
if (layout != null)
{
int line = layout.getLineForVertical(motionEvent.getY());
int offset = layout.getOffsetForHorizontal(line, motionEvent.getX());
}
之后,您可以使用BreakIterator或您自己的实现来返回被触摸的单词。