前言
添加删除线 方案一
结合网上其他的文章,有如下方式:通过设置setPaintFlags
// 添加删除线
textview.setPaintFlags(tv.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
//字体变清晰
textview.getPaint().setFlags(Paint.ANTI_ALIAS_FLAG);
//可以合并一起写为:
mTextView.getPaint().setFlags(Paint. STRIKE_THRU_TEXT_FLAG|Paint.ANTI_ALIAS_FLAG);
方式二
获取画笔后设置属性,重绘 TextView 。此方式有个问题,会把 TextView 原本的 Flags 属性替代,例如抗锯齿等。仔细查看,你会发现通过这种方式,文字有了锯齿。
tv.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);
方案三
tv.invalidate();
其实还可以通过SpannableString来实现:
rootView.findViewById(R.id.tv_money)?.let {
取消删除线
if (TextUtils.isEmpty(transFee)) {
it.text = "-"
} else {
var str : SpannableString = SpannableString("¥${TempStringUtil.formatRMBWithoutChar(transFee)}")
var span : StrikethroughSpan = StrikethroughSpan();
str.setSpan(span,0, str.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
var colorSpan = ForegroundColorSpan(rootView.resources.getColor(R.color.color_6604060e))
str.setSpan(colorSpan,0, str.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
it.text = str
推荐)方式一:先对 Paint.STRIKE_THRU_TEXT_FLAG 属性取反,再用按位与运算符&,除去了删除线属性并保留了 TextView 原本的 Flags 属性。setPaintFlags内会对 TextView 进行重绘。
tv.setPaintFlags(tv.getPaintFlags() & (~Paint.STRIKE_THRU_TEXT_FLAG));
方式二:获取画笔后,清空 Flags 属性,再重绘 TextView 。此方式有个问题,会把 TextView 原本的所有 Flags 属性清空,例如抗锯齿等。仔细查看,你会发现通过这种方式,文字有了锯齿;
tv.getPaint().setFlags(0);
tv.invalidate();
新的一天,加油哦!
喜欢文章的话,欢迎动动发财的小手,点个在看,赞。
--- end ---
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.