在众多项目中,都需要在一行字中突出显示其中的几个字,实现方法有很多,在这里总结下,供大家参考。实现如下效果:
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));
}
}
网友评论