如何使用可点击字符串中的长文本在TextView中创建一个单词?

时间:2013-12-23 18:33:27

标签: java android string textview

我对Android上的Java编码有一点疑问。

所以,我有一个带有字符串长文本的TextView。我只想点击这个长文本的一个单词,我可以将它链接到另一个Activity。

顺便说一下,我是Android开发的新手,所以请不要解释你的解决方案过于复杂。谢谢! :)

我不知道,我怎么能这样做。之前我也用google搜索过一个解决方案,但没有找到一个运行良好的明确方法。无论如何,我很感激你的帮助。

4 个答案:

答案 0 :(得分:2)

您想要点击的结果是什么?

最简单的方法是将URLSpan应用到TextView的内容中,但如果您想要查看网页以外的其他内容,则可以实现自己的ClickableSpan版本并制作点击做任何你想做的事。

根据您的评论进行修改:

使ClickableSpan转到另一个活动非常简单,这是您需要的代码的开头:

public class MyURLSpan extends ClickableSpan {
        Class<?> mClassToLaunch;

        public MyURLSpan(Class<?> classToLaunch) {
                mClassToLaunch = classToLaunch;
        }

        @Override
        public void onClick(View widget) {
                Intent intent = new Intent(widget.getContext(), mClassToLaunch);
                widget.getContext().startActivity(intent);
        }

        @Override
        public void updateDrawState(TextPaint ds) {
                // If you don't want the default drawstate (blue-underline), comment this super call out.
                super.updateDrawState(ds);
        }
}

然后使用它:

String longText = "your text goes here...";

SpannableString textViewContents = new SpannableString(longText);
textViewContents.setSpan(new MyURLSpan(NextActivity.class), indexToStart, lengthOfClickArea, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

myTextView.setText(textViewContents);

答案 1 :(得分:1)

嗯,你幸运 它似乎可能:请参阅this链接 另一种方法可能是在字符串中添加超链接。

答案 2 :(得分:0)

您可以创建每个单词的TextView,并将它们添加到FlowLayout。然后,您可以将OnClick事件分配给您想要的任何视图。

传送“这是一个测试”实际上由4个TextView组成,全部在一些布局中(可能是一个FlowLayout)。

在这篇SO帖子中有关于FlowLayout的一些细节:

How can I do something like a FlowLayout in Android?

答案 3 :(得分:0)

我没试过这个,但我认为如果你使用以下提示那么可能是你会成功。 txt.setText(Html.fromHtml( “...链接...”)); txt.setMovementMethod(LinkMovementMethod.getInstance());

select a word on a tap in TextView/EditText

我认为这会有所帮助。