2013-03-05 68 views
0

我的代碼看起來像這樣,設置點擊字符串 - 的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 ..當用戶點擊這些文本時,我想打開一個新的意圖。這可能嗎?任何指針都會很有幫助。

+0

http://stackoverflow.com/questions/4025770/android-launch-activity-from-clickable-text – Daniel 2013-03-05 12:04:27

+0

@ Daniel Yeaah早些時候看到,但我不明白:( – Naveen 2013-03-05 12:07:04

+0

mmm ...試圖看看Linkify看文檔 – 2013-03-05 14:52:33

回答

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()); 
+0

感謝指針@Leon ..我在代碼中做了一些更改,它的工作:) – Naveen 2013-03-05 15:42:01

3

您可以使用Linkify類,該類提供了將鏈接添加到TextViews的方法。您可以使用addLinks(TextView textView, Pattern pattern, String scheme)方法,該方法需要您爲要匹配的文本指定TextViewPattern以及將用於匹配Activities的自定義方案,該方案可以與這類數據配合使用。點擊鏈接時想要打開的Activity必須在其intent-filter中聲明此方案。希望這可以幫助。