【发布时间】:2013-11-05 03:36:56
【问题描述】:
有没有办法在 Android 中在文本上放置一行?由于下划线和删除线是可能的(与字体无关),似乎上划线也应该是。
我尝试过使用组合上划线符号(如下图所示),但它看起来确实很时髦。有没有其他方法可以实现这一目标?
【问题讨论】:
标签: java android text unicode text-decorations
有没有办法在 Android 中在文本上放置一行?由于下划线和删除线是可能的(与字体无关),似乎上划线也应该是。
我尝试过使用组合上划线符号(如下图所示),但它看起来确实很时髦。有没有其他方法可以实现这一目标?
【问题讨论】:
标签: java android text unicode text-decorations
我知道这不是一个完美的解决方案。但它会给出一些想法......
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);
}
}
【讨论】:
在做了足够多的研发之后,唯一的办法就是创建一个 ImageView 并将其动态设置为线条图像,并使用getWidth() 将其宽度设置为相对于 textview 的宽度,并将其放在textview 并相对于 textview 左对齐
【讨论】:
如果你想在你的文本视图上添加删除线,你可以使用绘制标志
TextView textview1=(TextView) findViewById(R.id.textView1);
textview1.setPaintFlags(textview1.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
【讨论】: