Android中的文字上划线

时间:2013-11-05 03:36:56

标签: java android text unicode text-decorations

有没有办法在Android中添加一行文字?由于下划线和删除线是可能的(独立于字体),因此似乎也应该进行上线。

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

Roman Numeral Converter

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:-1)

做足够的R& D,这样做的唯一方法是创建一个ImageView并将其动态设置为线条图像,并使用getWidth()设置其宽度相对于textview的宽度,并在textview上方定位并向左对齐到textview

答案 2 :(得分:-3)

如果你想在textview上使用删除线,你可以使用paint flags

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