Могу ли я определить текст с промежуточным текстом в 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 Strikethrough XML

Снимок экрана - Android TextView Зачеркнутый XML & Пример Kotlin/Java -

  1. Использование элемента удара.

    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"
/>    
  1. Использование 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");

  2. Использование 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.