can I define middle-lined text in an Android layout xml file
If you define a 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);
}
}
it's just
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
...
app:strikeThrough="@{true}"
.../>
in XML layout file.
To strike through, you can use a background image to create the strikethrough effect:
android:background="@drawable/strike_through"
Where strike_through drawable is a 9-patch image that keeps a line through the middle. This is the easiest way to implement it.
or you can do it programatically as this.
TextView t = (TextView) findViewById(R.id.text);
t.setText("Text here");
t.setPaintFlags(t.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
6 Amazing Ways - Android TextView Strikethrough XML & Kotlin/Java examples
Screenshot - Android TextView Strikethrough XML & Kotlin/java Example -
Using strike element.
strings.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"
/>
Using STRIKE_THRU_TEXT_FLAG
Kotlin
textview2.paintFlags = textview2.paintFlags or Paint.STRIKE_THRU_TEXT_FLAG textview2.text = "2. StrikeThrough Using Paint Flags
Java
textview2.setPaintFlags(textview2.getPaintFlags()| Paint.STRIKE_THRU_TEXT_FLAG); textview2.setText("2. StrikeThrough Using Paint Flags");
Using SpannableString
Kotlin
val content1 = "3.1 StrikeThrough Using SpannableString"
val spannableString1 = SpannableString(content1)
spannableString1.setSpan(StrikethroughSpan(),0,content1.length,0)
textview31.text = spannableString1
Java
textview2.setPaintFlags(textview2.getPaintFlags()| Paint.STRIKE_THRU_TEXT_FLAG);
textview2.setText("2. StrikeThrough Using Paint Flags"); `
In kotlin it can be done as:
your_textView.paintFlags = Paint.STRIKE_THRU_TEXT_FLAG