在開發過程中,可能會遇到某個textview上有一行文字,其中某幾個文字顏色不同,并且可點擊,還可響應點擊事件,附上代碼。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView = (TextView) findViewById(R.id.text1);
SpannableStringBuilder spannable = new SpannableStringBuilder("可以點擊的");
spannable.setSpan(new ForegroundColorSpan(Color.RED), 2, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); //這個一定要記得設置,不然點擊不生效textView.setMovementMethod(LinkMovementMethod.getInstance());
spannable.setSpan(new TextClick(), 2, 4
, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(spannable);
avoidHintColor(textView);
}
private class TextClick extends ClickableSpan {
@Override
public void onClick(View widget) {
Toast.makeText(MainActivity.this, "點擊了這個", Toast.LENGTH_SHORT).show();
//在此處理點擊事件
// Log.e("------->", "點擊了"); }
@Override public void updateDrawState (TextPaint ds){
//ds.setColor(ds.linkColor);
// ds.setColor()設定的是span超鏈接的文本顏色
// ds.setUnderlineText(true);
// }
// }
// 點擊后的背景顏色(HighLightColor)屬于TextView的屬性,
// Android4.0以上默認是淡綠色,低版本的是黃色
private void avoidHintColor (View view){
if (view instanceof TextView) {
((TextView) view).setHighlightColor(getResources().getColor
(android.R.color.transparent));
}
}
}
}
}
}