1

我必须在 textview 中显示一些文本。我只希望文本的一部分是可点击的,而文本的其余部分是正常的。

这是我的代码:

TextView mTextView = (TextView) findViewById(R.id.txt);
String mText = "some text.Link to click.Some more text";
SpannableString sb = new SpannableString(mText);
sb.setSpan(new ClickableSpan() {
    @Override
    public void onClick(View widget) {
        Intent in=new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.twitter.com/"));
        startActivity(in);
    }
},  mText.indexOf("Link"),mText.indexOf("Link") + 13,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

mTextView.setText(sb);
mTextView.setMovementMethod(LinkMovementMethod.getInstance());
4

2 回答 2

3

如果您将完整的 url 放入 TextView 中,您可以使用它android:autoLink="web"来大大简化此过程。

有关更多信息,请参阅 TextView 文档

另一种选择是Html 对象。具体来说,fromHtml()我认为这种方法可以让你实现你想要的。你应该能够做这样的事情:

mTextView.setText(Html.fromHtml("blah blah <a href=\"http://some.site.com\">some text to be linkified</a> blah blah"));
于 2012-12-02T02:37:45.847 回答
0

您也可以使用以下linkify选项:http ://android-developers.blogspot.com/2008/03/linkify-your-text.html - 在这种情况下,您可以动态构建字符串,并且只制作它的一部分你想要可点击的。

我从来没有听说过这个autoLink属性——酷。

另一种选择,可能更接近您的原始问题 - 您可以创建两个不同的 TextView 彼此相邻(如果间距很奇怪,请使用layout_marginRight="-8" - 使用负偏移量,这可能需要进行一些调整才能使间距完美)。然后,您可以将 autoLink 属性仅应用于您希望可点击的 TextView。

于 2012-12-02T02:52:18.603 回答