2013-03-05 2 views
0

내 코드는 다음과 같습니다는 설정 클릭 문자열 - 텍스트 뷰 (안드로이드)

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); 

텍스트 뷰의 텍스트를 설정하기 전에, 나는 @Naveen, @ 피터와 @Sam에 대한 클릭 이벤트를 추가하고 싶습니다 .. 사용자가이 텍스트를 탭하면 새로운 의도를 열어보고 싶습니다. 그럴 수 있습니까? 어떤 포인터라도 도움이 될 것입니다.

+0

http://stackoverflow.com/questions/4025770/android-launch-activity-from-clickable-text – Daniel

+0

@ Daniel Yeaah는 이전에 그것을 보았습니다. 그러나 이해할 수 없었습니다. ( – Naveen

+0

mmm ... Linkify를 살펴 보려고합니다. –

답변

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

3

TextViews에 링크를 추가하는 방법을 제공하는 Linkify 클래스를 사용할 수 있습니다. addLinks(TextView textView, Pattern pattern, String scheme) 메서드를 사용할 수 있습니다.이 메서드는 일치시킬 텍스트에 TextView, Pattern을 지정하고 이러한 종류의 데이터로 작업 할 수있는 Activities과 일치하는 데 사용되는 사용자 지정 구성표를 지정해야합니다. 링크를 클릭 할 때 열리고 자하는 Activity은이 스키마를 intent-filter에 선언해야합니다. 희망이 도움이됩니다.

관련 문제