如何在 Android 布局 xml 文件中定义中间线(删除线)文本?
6 回答
要删除,您可以使用背景图像来创建删除线效果:
android:background="@drawable/strike_through"
其中,strike_through drawable 是一个 9-patch 图像,它在中间保持一条线。这是实现它的最简单方法。
或者您可以像这样以编程方式进行。
TextView t = (TextView) findViewById(R.id.text);
t.setText("Text here");
t.setPaintFlags(t.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
6 种惊人的方式 - Android TextView 删除线 XML 和 Kotlin/Java 示例
屏幕截图 - Android TextView 删除线 XML 和 Kotlin/java 示例 -
使用罢工元素。
字符串.xml
<string name="strike_text">1. <strike>StrikeThrough</strike> Using strike</string>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/strike_text"
/>
使用 STRIKE_THRU_TEXT_FLAG
科特林
textview2.paintFlags = textview2.paintFlags or Paint.STRIKE_THRU_TEXT_FLAG textview2.text = "2. StrikeThrough Using Paint Flags
爪哇
textview2.setPaintFlags(textview2.getPaintFlags()| Paint.STRIKE_THRU_TEXT_FLAG); textview2.setText("2. StrikeThrough Using Paint Flags");
使用 SpannableString
科特林
val content1 = "3.1 StrikeThrough Using SpannableString"
val spannableString1 = SpannableString(content1)
spannableString1.setSpan(StrikethroughSpan(),0,content1.length,0)
textview31.text = spannableString1
爪哇
textview2.setPaintFlags(textview2.getPaintFlags()| Paint.STRIKE_THRU_TEXT_FLAG);
textview2.setText("2. StrikeThrough Using Paint Flags"); `
如果你定义一个 BindingAdapter
@BindingAdapter("strikeThrough")
public static void strikeThrough(TextView textView, Boolean strikeThrough) {
if (strikeThrough) {
textView.setPaintFlags(textView.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
} else {
textView.setPaintFlags(textView.getPaintFlags() & ~Paint.STRIKE_THRU_TEXT_FLAG);
}
}
只是
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
...
app:strikeThrough="@{true}"
.../>
在 XML 布局文件中。
在 kotlin 中,它可以这样完成:
your_textView.paintFlags = Paint.STRIKE_THRU_TEXT_FLAG
仅在 xml 文件中执行此操作,这就是我所做的:
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/text_view_original_cash_amount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dp"
android:textColor="@android:color/darker_gray"
android:text="$36000"/>
<View
android:layout_width="wrap_content"
android:layout_height="1dp"
android:background="@android:color/darker_gray"
android:layout_centerVertical="true"
android:layout_alignStart="@id/text_view_original_cash_amount"
android:layout_alignEnd="@id/text_view_original_cash_amount"/>
</RelativeLayout>
希望这可以帮助!
textview.setPaintFlags(textview.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
您可以在活动中使用上面的代码来删除文本。
并通过 xml 设置参考这个