Как я могу определить текст с промежуточной строкой (зачеркнуть) в XML файле макета Android?
Могу ли я определить текст с промежуточным текстом в XML файле макета Android
Ответ 1
Чтобы пробить, вы можете использовать фоновое изображение для создания эффекта прокрутки:
android:background="@drawable/strike_through"
В тех случаях, когда draw_through drawable является 9-патч-изображением, которое удерживает линию через середину. Это самый простой способ его реализации.
или вы можете сделать это программно как это.
TextView t = (TextView) findViewById(R.id.text);
t.setText("Text here");
t.setPaintFlags(t.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
Ответ 2
6 удивительных способов - Android TextView Зачеркнутый XML & Примеры Kotlin/Java
Снимок экрана - Android TextView Зачеркнутый XML & Пример Kotlin/Java -
Использование элемента удара.
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"
/>
Использование STRIKE_THRU_TEXT_FLAG
Котлин
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");
Использование SpannableString
Котлин
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"); '
Ответ 3
Чтобы сделать это только в 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>
Надеюсь, это поможет!
Ответ 4
textview.setPaintFlags(textview.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
вы можете использовать приведенный выше код в действии, чтобы нанести удар по тексту.
И для установки через xml обратитесь this
Ответ 5
В котлине это можно сделать так:
your_textView.paintFlags = Paint.STRIKE_THRU_TEXT_FLAG
Ответ 6
Если вы определите 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.