【问题标题】:Text overline in AndroidAndroid中的文字上划线
【发布时间】:2013-11-05 03:36:56
【问题描述】:

有没有办法在 Android 中在文本上放置一行?由于下划线和删除线是可能的(与字体无关),似乎上划线也应该是。

我尝试过使用组合上划线符号(如下图所示),但它看起来确实很时髦。有没有其他方法可以实现这一目标?

【问题讨论】:

    标签: java android text unicode text-decorations


    【解决方案1】:

    我知道这不是一个完美的解决方案。但它会给出一些想法......

    public class OverLineTextView extends TextView {
    
        private Paint paint;
    
        public OverLineTextView(Context context) {
            super(context);
            init();
        }
    
        public OverLineTextView(Context context, AttributeSet attrs) {
            super(context, attrs);
            init();
        }
    
        public OverLineTextView(Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
            init();
        }
    
        private void init() {
            paint = new Paint();
            paint.setAntiAlias(true);
            paint.setColor(Color.GREEN);
            paint.setStyle(Style.STROKE);
        }
    
        @Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);
            float width = getPaint().measureText(getText().toString());
            canvas.drawLine(getTotalPaddingLeft(), getTotalPaddingTop() + 1,
                    getTotalPaddingLeft() + width, getTotalPaddingTop() + 1, paint);
        }
    }
    

    【讨论】:

    • 这看起来很有希望。我将不得不弄乱它,以便只有特定字符才能收到上划线。
    【解决方案2】:

    在做了足够多的研发之后,唯一的办法就是创建一个 ImageView 并将其动态设置为线条图像,并使用getWidth() 将其宽度设置为相对于 textview 的宽度,并将其放在textview 并相对于 textview 左对齐

    【讨论】:

    • 如果您有多行文本,这不是一个好的解决方案。
    【解决方案3】:

    如果你想在你的文本视图上添加删除线,你可以使用绘制标志

    TextView textview1=(TextView) findViewById(R.id.textView1);
    textview1.setPaintFlags(textview1.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
    

    【讨论】:

      猜你喜欢
      • 2015-08-07
      • 2011-08-12
      • 2016-02-16
      • 2013-09-13
      • 1970-01-01
      • 1970-01-01
      • 2016-07-25
      • 1970-01-01
      • 2014-08-01
      相关资源
      最近更新 更多