can I define middle-lined text in an Android layout xml file

后端 未结 6 1900
借酒劲吻你
借酒劲吻你 2021-02-05 07:13

How can I define middle-lined(strikethrough) text in an Android layout xml file?

相关标签:
6条回答
  • 2021-02-05 07:48

    6 Amazing Ways - Android TextView Strikethrough XML & Kotlin/Java examples

    Screenshot - Android TextView Strikethrough XML & Kotlin/java Example -

    1. 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"
    />    
    
    1. 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");

    2. 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");    `
    
    0 讨论(0)
  • 2021-02-05 07:48

    In kotlin it can be done as:

    your_textView.paintFlags = Paint.STRIKE_THRU_TEXT_FLAG
    
    0 讨论(0)
  • 2021-02-05 07:49

    To do it in only xml file, this is what I do:

    <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>
    

    Hope this helps!

    0 讨论(0)
  • 2021-02-05 07:56
    textview.setPaintFlags(textview.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
    

    you can use the above code in activity to have strike over the text.

    And to set through xml refer this

    0 讨论(0)
  • 2021-02-05 08:01

    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.

    0 讨论(0)
  • 2021-02-05 08:05

    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);
    
    0 讨论(0)
提交回复
热议问题