【问题标题】:How to set color of UnderlineSpan?如何设置 UnderlineSpan 的颜色?
【发布时间】:2013-01-10 02:03:52
【问题描述】:

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

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

【问题讨论】:

  • 这可能是你最好的选择:stackoverflow.com/questions/7684560/… ... 或者,也许:stackoverflow.com/questions/13238298/…
  • 谢谢,但不幸的是第一个解决方案不起作用(两个答案),我无法使用第二个,因为我的应用是键盘,无法直接访问 EditText。
  • 问题是没有 API 支持的方法可以做到这一点,至少在现有的 Android 上没有。
  • 我能找到的唯一方法是使用 SuggestionSpan,它可以是红色、蓝色或浅灰色,但不能是任何自定义颜色。
  • 查看@android-developer 答案stackoverflow.com/a/48665758/2713403

标签: android android-edittext textview


【解决方案1】:

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

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

【讨论】:

    【解决方案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);
        }
    }
    

    【讨论】:

      【解决方案3】:

      这就是我的工作方式

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-02-28
        • 2014-10-07
        • 2011-12-13
        • 2013-09-19
        • 1970-01-01
        • 2012-03-21
        • 2018-07-22
        相关资源
        最近更新 更多