设置可点击的字符串 - Textview(Android)

时间:2013-03-05 12:01:48

标签: android textview

我的代码看起来像这样,

String content = "Hi this is @Naveen. I'll meet @Peter in the evening.. Would you like to join @Sam??";

TextView contentTextView=(TextView)userHeader.findViewById(R.id.contentTextView);
contentTextView.setText(content);

在textview中设置文本之前,我想为@Naveen,@ Peter和@Sam添加click事件。当用户点击这些文本时,我想打开一个新意图..这可能吗?任何指针都会非常有用。

2 个答案:

答案 0 :(得分:4)

您可以尝试将Linkify与自定义模式一起使用。

但是,如果这不符合您的需求,您可以试试这个:

SpannableString ss = new SpannableString("Hi this is @Naveen. I'll meet @Peter in the evening.. Would you like to join @Sam??");
ClickableSpan clickableSpanNaveen = new ClickableSpan() {
    @Override
    public void onClick(View textView) {
        //Do Stuff for naveen
    }
};
ClickableSpan clickableSpanPeter = new ClickableSpan() {
    @Override
    public void onClick(View textView) {
        //Do Stuff for peter
    }
};
ClickableSpan clickableSpanSam = new ClickableSpan() {
    @Override
    public void onClick(View textView) {
        //Do Stuff for sam
    }
};

ss.setSpan(clickableSpanNaveen, 11, 17, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
ss.setSpan(clickableSpanPeter, 29, 35, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
ss.setSpan(clickableSpanSam, 76, 79, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
TextView contentTextView=(TextView)userHeader.findViewById(R.id.contentTextView);
contentTextView.setText(ss);
contentTextView.setMovementMethod(LinkMovementMethod.getInstance());

答案 1 :(得分:3)

您可以使用Linkify类,该类提供了添加TextViews链接的方法。您可以使用addLinks(TextView textView, Pattern pattern, String scheme)方法,该方法需要您为要匹配的文本指定TextViewPattern以及将用于匹配{{1}的自定义方案可以使用这种数据。单击链接时要打开的Activities必须在Activity中声明此方案。希望这会有所帮助。