Android TextView 设置中划线 下划线

本文介绍如何使用TextView的Paint属性设置文字样式,包括下划线、抗锯齿和中划线效果,通过设置不同标志位实现清晰的文字显示效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

textView.getPaint().setFlags(Paint. UNDERLINE_TEXT_FLAG ); //下划线
textView.getPaint().setAntiAlias(true);//抗锯齿
textview.getPaint().setFlags(Paint. STRIKE_THRU_TEXT_FLAG); //中划线
setFlags(Paint. STRIKE_THRU_TEXT_FLAG|Paint.ANTI_ALIAS_FLAG); // 设置中划线并加清晰
textView.getPaint().setFlags(0); // 取消设置的的划线

Android 的 `TextView` 中实现文字划线效果,可以通过以下几种方法来完成: ### 1. 使用 XML 属性设置删除线 可以在布局文件中通过 `android:textStyle` 配合自定义属性或者使用 `Paint` 对象来间接实现划线效果。但直接设置删除线通常需要代码实现。[^1] ### 2. 使用 `Paint` 设置删除线样式 通过获取 `TextView` 的 `Paint` 对象并调用其 `setStrikeThruText(boolean)` 方法可以开启或关闭删除线效果。 ```java TextView textView = findViewById(R.id.myTextView); textView.getPaint().setStrikeThruText(true); // 开启删除线效果 ``` ### 3. 使用 `SpannableString` 和 `StrikethroughSpan` 如果希望对部分文本应用划线效果,而不是整个字符串,则可以使用 `SpannableString` 并结合 `StrikethroughSpan` 来实现更精细的控制。 ```java TextView textView = findViewById(R.id.myTextView); SpannableString spannableString = new SpannableString("这是一个带有删除线的文字示例"); StrikethroughSpan strikethroughSpan = new StrikethroughSpan(); spannableString.setSpan(strikethroughSpan, 5, 10, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // 在第5到第10个字符之间添加删除线 textView.setText(spannableString); ``` ### 4. 自定义 View 实现下划线或删除线 对于更复杂的需求,如自定义划线样式(颜色、粗细等),可以通过继承 `TextView` 并重写 `onDraw()` 方法,利用 `Canvas` 和 `Paint` 手动绘制线条来实现。 ```java public class CustomTextView extends AppCompatTextView { private Paint mPaint; public CustomTextView(Context context) { this(context, null); } public CustomTextView(Context context, AttributeSet attrs) { super(context, attrs); init(); } private void init() { mPaint = new Paint(); mPaint.setColor(Color.RED); // 设置划线颜色 mPaint.setStrokeWidth(2); // 设置划线宽度 } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); // 绘制一条横贯 TextView 的红色删除线 float y = getBaseline() + (getLineSpacingExtra() / 2); canvas.drawLine(0, y, getWidth(), y, mPaint); } } ``` 以上方法可以根据具体需求选择使用,其中 `SpannableString` 提供了灵活的文本格式化能力,而自定义 `View` 则提供了最高的自由度以满足特殊需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值