美文网首页
Android中TextView局部变色功能实现

Android中TextView局部变色功能实现

作者: 素颜的你 | 来源:发表于2018-04-28 14:08 被阅读0次

在众多项目中,都需要在一行字中突出显示其中的几个字,实现方法有很多,在这里总结下,供大家参考。实现如下效果:

image.png
1.方法一:通过Html标签实现
xml代码
 <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

java代码 :
  TextView textView = findViewById(R.id.tv);
  String str = "点击下一步即表示你同意<font color='#FF0000'>贷款协议</font>";
  textView.setTextSize(18);
  textView.setText(Html.fromHtml(str));

如果将字符串抽出到资源文件,应该这样写:
string.xml
    <string name="click_next_step_agree_the_agreements"><![CDATA[点击下一步即表示你同意<font color=\'#FF0000\'>贷款协议</font>]]></string>

2.方法二:通过SpannableString来实现

SpannableString spannableString = new SpannableString("默认颜色红颜色");
spannableString.setSpan(new ForegroundColorSpan(Color.parseColor("#FF0000")), 4,spannableString.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.setText(spannableString);

3.方法三:通过ClickableSpan+SpannableString组合来实现,这时可以设置突出字体部分的点击事件

SpannableString spannableString = new SpannableString("点击下一步即表示你同意贷款协议"); spannableString.setSpan(new TextClick(), 11, spannableString.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
textView.setText(spannableString);

自定义ClickableSpan:
//样式
    private class TextClick extends ClickableSpan {

        @Override
        public void onClick(View widget) {
            if (widget instanceof TextView)
                ((TextView) widget).setHighlightColor(getBaseContext().getResources().getColor(android.R.color.transparent));
            Toast.makeText(getBaseContext(), "跳转协议内容", Toast.LENGTH_LONG).show();
        }

        @Override
        public void updateDrawState(TextPaint ds) {
            ds.setColor(getBaseContext().getResources().getColor(R.color.colorPrimary));
        }
    }

相关文章

网友评论

      本文标题:Android中TextView局部变色功能实现

      本文链接:https://www.haomeiwen.com/subject/mkcglftx.html