2

我正在尝试创建文本视图,文本颜色为黑色,删除线为红色,我尝试使用 html 但似乎不起作用

String styledText = "<span style='color:red;text-decoration:line-through'><span style='color:black'>TEXT</span></span>";    
myText.setText(Html.fromHtml(styledText));

我也尝试了以下方法,但不知道如何为删除线定义不同的颜色

myText.setPaintFlags(myText.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
4

3 回答 3

2

如果您想删除中的所有文本,TextView您可以简单地创建一个子类,TextView在其中使用您选择的颜色绘制删除线。

于 2012-04-19T22:11:33.767 回答
2
@Override
protected void onDraw(Canvas canvas) {

    super.onDraw(canvas);
    drawStrikeThroughPaint(canvas);
}

public void drawStrikeThroughPaint(Canvas canvas) {
    canvas.drawLine(0, getMeasuredHeight() / 2, getMeasuredWidth(), getMeasuredHeight() / 2, strikethroughPaint);
}
于 2013-09-12T11:12:16.580 回答
1

迟到了,但使用图层列表并将其放在 textview 背景的顶部。完美运行。让我演示给你看。

在drawables文件夹中创建一个名为strikethru.xml的文件:

 <?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <solid android:color="#FFFFFF"/>
        </shape>
    </item>
    <item>
        <shape android:shape="line">
            <stroke android:width="1dp"
                android:color="#8d8d8d"/> <!-- adjust color you want here -->
        </shape>
    </item>
</layer-list>

然后在你的文本视图中这样做:

    <TextView
                                android:id="@+id/tv_toolbar_prod_price"
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"

                                android:paddingRight="3dp"
                                android:text="1,290 B"      

android:background="@drawable/strikethru_line"
                                android:textColor="#070707"
                                android:textSize="13sp" />

3dp 的填充权使删除线更多地从文本中出来,以提供真实世界的效果。

于 2017-07-19T09:23:44.513 回答