📜  android 绘制带下划线的文本 (1)

📅  最后修改于: 2023-12-03 15:13:21.788000             🧑  作者: Mango

Android 绘制带下划线的文本

在 Android 应用程序中,经常需要为文本添加下划线,以突出显示特定文本或链接。在本文中,我们将学习如何使用 Android 标准类库和方法绘制带下划线的文本。

使用 TextView 设置下划线

使用 TextView 来显示文本是非常常见和简单的方法。TextView 提供了许多属性和方法,可以用于格式化文本和添加下划线。下面是一个示例:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World!"
    android:textSize="20sp"
    android:textStyle="bold|italic"
    android:underline="true" />

通过将 android:underline 属性设置为 true,可以在 TextView 中添加下划线。可以使用 android:textStyle 属性设置文本样式,例如粗体、斜体等。还可以使用 android:textSize 属性设置文本的大小。

使用 Paint 绘制下划线

另一种方法是使用 Android 自带的 Paint 类绘制下划线。这种方法的优点是可以更好地控制下划线的样式和位置。

首先,创建一个自定义 View,并在 onDraw() 方法中绘制文本和下划线。下面是示例代码:

public class UnderlinedTextView extends View {

    private String mText;
    private Paint mTextPaint;
    private Paint mLinePaint;

    public UnderlinedTextView(Context context) {
        super(context);
        init();
    }

    public UnderlinedTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    private void init() {
        mText = "Hello World!";

        // 初始化文本画笔
        mTextPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
        mTextPaint.setTextSize(40);
        mTextPaint.setColor(Color.BLACK);

        // 初始化下划线画笔
        mLinePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
        mLinePaint.setColor(Color.BLACK);
        mLinePaint.setStyle(Paint.Style.STROKE);
        mLinePaint.setStrokeWidth(5);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        // 绘制文本
        canvas.drawText(mText, 0, getHeight(), mTextPaint);

        // 绘制下划线
        float y = getHeight() + mLinePaint.getStrokeWidth() / 2;
        canvas.drawLine(0, y, mTextPaint.measureText(mText), y, mLinePaint);
    }
}

init() 方法中,我们初始化了文本画笔和下划线画笔。文本画笔用于绘制文本,下划线画笔用于绘制下划线。

onDraw() 方法中,我们首先调用 drawText() 方法绘制文本。文本的绘制位置是 View 的底部。

接下来,我们计算下划线的位置并使用 drawLine() 方法绘制下划线。mLinePaint.getStrokeWidth() 获取下划线的宽度,而 mTextPaint.measureText(mText) 获取文本的宽度。

最后,将 CustomView 添加到布局中即可。

<com.example.myapplication.UnderlinedTextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />
总结

这篇文章介绍了两种在 Android 应用程序中绘制下划线的方法。使用 TextView 可以很容易地添加直接下划线,但是对于更复杂的下划线,使用 Paint 更为灵活和强大。希望这篇文章对你有所帮助!