11

这个问题是我上一个问题的后续:如何突出显示文本,如 Android 拼写检查器?

我正在使用 UnderlineSpan 为 EditText 中的文本添加下划线,但我需要下划线为IN COLOR,就像拼写检查器的屏幕截图一样:

在此处输入图像描述

4

3 回答 3

3

不幸的是,您不能仅使用 Span 来做到这一点——没有公共方法可以满足您的要求。有一种方法可以在 TextPaint 中设置独立于文本颜色的下划线颜色(您可以在 SuggestionSpan 的源代码中看到它),但它是隐藏的

如果您可以访问 EditText,则可以自己处理 Span 并绘制下划线,否则您将不走运。

于 2015-08-24T15:03:40.693 回答
1

这是您可以用来设置文本下方线条颜色的功能

public void addUnderLineLink(TextView mTextView) {
    if (mTextView != null) {
        SpannableString content = new SpannableString(mTextView.getText().toString());
        UnderlineSpan us=new UnderlineSpan();
        TextPaint tp=new TextPaint();
        tp.setColor(ContextCompat.getColor(getContext(),R.color.white));
        us.updateDrawState(tp);
        content.setSpan(us, 0, mTextView.getText().toString().length(), 0);
        mTextView.setText(content);
    }
}
于 2017-04-24T09:17:57.873 回答
0

This is how i made it work

Spanned part_1 = Html.fromHtml(getString(R.string.part1));
Spanned part_2 = Html.fromHtml("<u><font color='#2eb6f0'>Text in blue</font></u>");
Spanned part_3 = Html.fromHtml(getString(R.string.part3));
Spanned output = (Spanned) TextUtils.concat(part_1, part_2, part_3);

textview.setText(output, TextView.BufferType.SPANNABLE);
于 2017-01-28T00:37:22.233 回答