SpannableString同時設定ClickableSpan和ForegroundColorSpan時ForegroundColorSpan不生效的解決辦法
阿新 • • 發佈:2018-12-29
SpannableString同時設定了ClickableSpan和ForegroundColorSpan後,發現ForegroundColorSpan不生效。
原因:ClickableSpan將ForegroundColorSpan的顏色覆蓋了解決方式:將ForegroundColorSpan替換為UnderlineSpan,並重寫updateDrawState方法
SpannableString protocol = new SpannableString(getResources().getString(R.string.protocol)); protocol.setSpan(new ClickableSpan() { @Override public void onClick(View widget) { Intent intent = new Intent(); intent.setClass(context, WebViewActivity.class); startActivity(intent); } }, 13, 23, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); protocol.setSpan(new UnderlineSpan() { @Override public void updateDrawState(TextPaint ds) { ds.setColor(Color.BLUE));//設定顏色 ds.setUnderlineText(false);//去掉下劃線 } }, 13, 23, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); privacyProtocol.setText(protocol); privacyProtocol.setMovementMethod(LinkMovementMethod.getInstance());