如何设置UnderlineSpan的颜色?

时间:2013-01-26 02:13:40

标签: android android-edittext textview

这个问题是我上一期提问的后续问题:How to highlight text like Android spell-checker?

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

enter image description here

3 个答案:

答案 0 :(得分:3)

不幸的是,你不能仅仅通过跨度来做到这一点 - 没有公开的方法来做你所要求的。有一种方法可以在TextPaint中设置下划线颜色,与文本颜色无关(您可以在SuggestionSpan的源代码中看到它),但是it's hidden

如果你可以访问EditText,你可以自己处理Span并绘制下划线,但是你运气不好。

答案 1 :(得分:2)

此处是可用于设置文本

下方的线条颜色的功能
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);
    }
}

答案 2 :(得分:0)

这就是我的工作方式

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