Android TextView で一部をリンク

Android TextView の一部文字列をリンクにする方法、
特に目新しいわけではないが、サンプルとして、、、

//SpanSampleActivity という Activity の onCreate の中で、、

final TextView textView = (TextView)findViewById(R.id.textViewId);
String text = "ClickableSpan のテスト この link をクリックで!!";
Spannable span = Spannable.Factory.getInstance().newSpannable(text);
Pattern pattern = Pattern.compile("link");
Matcher matcher = pattern.matcher(text);
while(matcher.find()){

   span.setSpan(new ClickableSpan(){
      @Override
      public void onClick(View widget){

         Toast.makeText(SpanSampleActivity.this,"link clicked!!",Toast.LENGTH_SHORT).show();
      }
   },matcher.start(),matcher.end(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
textView.setText(span);
// これが無いとリンク文字以外が消える
// ↓↓↓

textView.setTextColor(Color.WHITE); // あるいは、、 textView.setTextColor(0xffffffff);
// これを忘れずに。
// ↓↓↓↓↓↓↓

textView.setMovementMethod(LinkMovementMethod.getInstance());

-----------
Android 4.0 のエミュレータで試すと、、、

f:id:posturan:20160314233816j:plain


クリックすると以下の Toast

f:id:posturan:20160314233811j:plain