首先,我們使用到的是CharSequence的子類SpannableString類
在這個(gè)類中有這樣一個(gè)
TestActivity.java
public class TestActivity extends AppCompatActivity {
private TextView textView;
private String message = "我們使用到的是我們使用到的是我們使用到的是";
private SpannableString spanAbleInfo;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
textView = (TextView) findViewById(R.id.textView);
spanAbleInfo = new SpannableString(message);
spanAbleInfo.setSpan(new CommonClickableSpan(),0,3, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
textView.setText(spanAbleInfo);
textView.setMovementMethod(LinkMovementMethod.getInstance());
textView.setHighlightColor(getResources().getColor(android.R.color.transparent));
}
}
CommonClickableSpan.java
public class CommonClickableSpan extends ClickableSpan implements View.OnClickListener {
@Override
public void onClick(View widget) {
Log.i(getClass().getSimpleName(),"text view is clicked");
}
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(false);
ds.clearShadowLayer();
ds.setColor(Color.RED);
}
}
寫到這里斩披,其實(shí)很多地方已經(jīng)沒(méi)問(wèn)題愧薛,而上次我記錄了兵钮,有一個(gè)地方有一個(gè)坑耐版,記得要注意全景,就是如果這個(gè)CommonClickableSpan類只繼承了ClickableSpan類俐巴,那么內(nèi)部的onClick方法只能接受一次骨望,而想每次點(diǎn)擊都有效,就要繼承OnClickListener接口欣舵,還有就是別忘記了添加textView.setMovementMethod(LinkMovementMethod.getInstance())擎鸠;