Android 如何设置下划线的颜色?

Android 如何设置下划线的颜色?,android,android-edittext,textview,Android,Android Edittext,Textview,这是我最后一个问题的后续问题: 我正在使用下划线窗格为EditText中的文本加下划线,但我需要下划线的颜色为,,如拼写检查器的屏幕截图所示: 不幸的是,您不能仅用一个Span来完成这项工作——没有公共方法来满足您的要求。有一种方法可以在TextPaint中设置与文本颜色无关的下划线颜色(您可以在SuggestionSpan的源代码中看到) 如果你可以访问编辑文本,你可以自己处理跨度和画下划线,否则你就倒霉了。我就是这样做的 Spanned part_1 = Html.fromHtml(getS

这是我最后一个问题的后续问题:

我正在使用下划线窗格为EditText中的文本加下划线,但我需要下划线的颜色为,如拼写检查器的屏幕截图所示:


不幸的是,您不能仅用一个Span来完成这项工作——没有公共方法来满足您的要求。有一种方法可以在TextPaint中设置与文本颜色无关的下划线颜色(您可以在SuggestionSpan的源代码中看到)


如果你可以访问编辑文本,你可以自己处理跨度和画下划线,否则你就倒霉了。

我就是这样做的

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);
span part_1=Html.fromHtml(getString(R.string.part1));
跨距部分_2=Html.fromHtml(“蓝色文本”);
span part_3=Html.fromHtml(getString(R.string.part3));
跨距输出=(跨距)TextUtils.concat(第1部分、第2部分、第3部分);
setText(输出,textview.BufferType.Spanable);

这是一个函数,您可以使用它设置文本下方行的颜色

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

这可能是你最好的选择:。。。或者,也许:谢谢你,但不幸的是,第一个解决方案不起作用(两个答案),我不能使用第二个解决方案,因为我的应用程序是一个键盘,无法直接访问EditText。问题是没有支持API的方法来做这件事,至少在股票Android上没有。我能找到的唯一方法是使用SuggestionSpan,它可以是红色、蓝色或浅灰色,但不是任何自定义颜色。请检查@android开发者回答“它不起作用…”。。。。