【问题标题】:can I define middle-lined text in an Android layout xml file我可以在 Android 布局 xml 文件中定义中间行文本吗
【发布时间】:2012-06-07 11:17:04
【问题描述】:

如何在 Android 布局 xml 文件中定义中间线(删除线)文本?

【问题讨论】:

    标签: android text


    【解决方案1】:

    要删除线,您可以使用背景图片来创建删除线效果:

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

    【讨论】:

    • 我可以改变这条中间线的颜色吗?
    • 对于 xml 实现,您只需要更改用于背景的图像。对于编程方法,我不确定是否可能。
    • 你如何在 kotlin 中做到这一点?
    【解决方案2】:

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

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

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

      如果你定义了一个 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 布局文件中。

      【讨论】:

        【解决方案4】:

        在 kotlin 中可以这样做:

        your_textView.paintFlags = Paint.STRIKE_THRU_TEXT_FLAG
        

        【讨论】:

          【解决方案5】:

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

          希望这会有所帮助!

          【讨论】:

            【解决方案6】:
            textview.setPaintFlags(textview.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
            

            您可以在活动中使用上面的代码来删除文本。

            通过xml设置参考this

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2011-01-24
              • 2020-06-14
              • 1970-01-01
              • 2013-05-25
              • 1970-01-01
              • 1970-01-01
              • 2011-04-21
              相关资源
              最近更新 更多