android textview等文字內容中字型顏色的改變和字型背景色的改變
阿新 • • 發佈:2019-01-25
上面這個連結是之前瞭解的我當時已知的改變textView顏色的方法
今天好像有發現了一中,特拿裡分享
TextView textView = (TextView) findViewById(R.id.textView); String str1 = "你猜1我猜1大家都猜1"; String str2 = "嘻嘻哈哈,啊啊啊啊,唔哈嗚哈"; Color color = new Color(); SpannableString spanttt = new SpannableString(str1); ClickableSpan clickstr1 = new MyClickableSpan(color.rgb(255, 255, 0), this); spanttt.setSpan(clickstr1, 0, str1.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); SpannableString spansss = new SpannableString(str2); ClickableSpan clickstr2 = new MyClickableSpan(color.rgb(0, 0, 255), this); spansss.setSpan(clickstr2, 0, str2.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); textView.setText("我是誰"); textView.append(spanttt); textView.append("你是誰你是誰你是誰你是誰你是誰你是誰你是誰"); textView.append(spansss); textView.setMovementMethod(LinkMovementMethod.getInstance());
public class MyClickableSpan extends ClickableSpan { String string; Context context; int color; int bgcolor; public MyClickableSpan(String str, Context context) { super(); this.string = str; this.context = context; } public MyClickableSpan(int color, Context context) { super(); this.color = color; this.context = context; } public MyClickableSpan(int color, int bgcolor, Context context) { super(); this.color = color; this.bgcolor = bgcolor; this.context = context; } @Override public void updateDrawState(TextPaint ds) { // 設定可點選文字的顏色值:注意這地方的引數是id或rgb值, // 如果設定R.color.blue等自定義的顏色值時不會出現預想的效果 // ds.setColor(color); // ds.setColor(Color.BLUE);//設定顏色值有效 // ds.setColor(R.color.red);//設定顏色值“無效” //設定可點選文字下面是否帶下劃線 ds.setUnderlineText(true); // ds.clearShadowLayer(); } @Override public void onClick(View view) { // 設定可點選文字的背景色 if (view instanceof TextView) ((TextView) view).setHighlightColor(Color.rgb(253, 65, 65)); // Intent intent = new Intent(); // intent.setClass(context, TwoActivity.class); // context.startActivity(intent); } }
Demo 下載地址