首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >个性化strikeThrough Textview

个性化strikeThrough Textview
EN

Stack Overflow用户
提问于 2012-08-07 12:41:29
回答 3查看 2.6K关注 0票数 2

我用这个来通过一个textView

textView.setPaintFlags(textView.getPaintFlags() x- Paint.STRIKE_THRU_TEXT_FLAG);

但现在我想个性化的颜色,并旋转它45°,以适应对角的内容。

我绑的是:

我想要扩展textview小部件并重写onDraw方法。但我是设计的初学者..。

那么,如何在textView上绘制红色(颜色)旋转线,有什么帮助吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-07 15:23:25

增加Mayani的反应

代码语言:javascript
复制
@Override
protected void onDraw(Canvas canvas) {
    Paint paint = new Paint();
    paint.setColor(strikeThroughColor);
    paint.setStyle(Paint.Style.FILL);
    paint.setFakeBoldText(true);
    paint.setStrikeThruText(true);
    paint.setStrokeWidth(strikeThroughWidth);
    paint.setFlags(Paint.ANTI_ALIAS_FLAG);
    super.onDraw(canvas);
    float width = getWidth();
    float height = getHeight();
    canvas.drawLine(width / 10, height / 10, (width - width / 10), (height - height / 10), paint);
}
票数 2
EN

Stack Overflow用户

发布于 2012-08-07 12:46:37

为此,请执行以下步骤:

  1. 通过扩展类创建TextView
  2. 在XML布局中声明此自定义TextView,就像我们对textview、Button小部件一样。

例如:

代码语言:javascript
复制
  class CustomTextView extends View {
        private int mColor;
        private int mRotationAngle, mRotationW, mRotationH;

            private String mText;
         public CustomTextView(Context context) { 
            super(context);
            // set default parameters
            mColor = Color.WHITE;
            mRotationAngle = 0;
         }

         public void SetColor(int newcolor) {
            mColor = newcolor;
            this.invalidate();
         } 

       public void SetRotation(int newangle, int neww, int newh) {
        mRotationAngle = newangle;
        mRotationW = neww;
        mRotationH = newh;
        this.invalidate();
    }

       public void SetText(String newtext) {
            mText = newtext;
            this.invalidate();
        }

    @Override 
        protected void onDraw(Canvas canvas) { 
            Paint paint = new Paint(); 
            paint.setStyle(Paint.Style.FILL); 
            canvas.rotate(mRotationAngle,mRotationW,mRotationH);
            canvas.drawText(mText, 0, 0, paint);
            super.onDraw(canvas); 
        } 
    }

更新:

检查Specifying “strikethrough” on a section of TextView text

票数 0
EN

Stack Overflow用户

发布于 2016-12-20 06:17:04

使用下面的方法,您可以在不影响java代码中的UI的情况下实现此功能:

代码语言:javascript
复制
                <RelativeLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentStart="true"
                    android:layout_centerVertical="true">

                    <TextView
                        android:id="@+id/textview1"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentStart="true"
                        android:text="$99"
                        android:textSize="12sp" />

                    <View
                        android:layout_width="0dp"
                        android:layout_height="1dp"
                        android:layout_centerVertical="true"
                        android:layout_alignLeft="@+id/textview1"
                        android:layout_alignRight="@+id/textview1"
                        android:background="@color/fav_dark_red_color" />
                </RelativeLayout>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11846253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档