java.lang.RuntimeException: PARAGRAPH 跨度必须从段落边界开始(后面是 46 个)

java.lang.RuntimeException: PARAGRAPH span must start at paragraph boundary (46 follows )

尝试在文本视图中呈现文本时出现以下错误

java.lang.RuntimeException: PARAGRAPH span must start at paragraph boundary (46 follows  )
                                                                   at android.text.SpannableStringInternal.setSpan(SpannableStringInternal.java:161)
                                                                   at android.text.SpannableStringInternal.copySpans(SpannableStringInternal.java:67)
                                                                   at android.text.SpannableStringInternal.<init>(SpannableStringInternal.java:42)
                                                                   at android.text.SpannedString.<init>(SpannedString.java:30)
                                                                   at android.text.method.ReplacementTransformationMethod.getTransformation(ReplacementTransformationMethod.java:83)
                                                                   at android.widget.TextView.setText(TextView.java:4436)
                                                                   at android.widget.TextView.setText(TextView.java:4332)
                                                                   at android.widget.TextView.setText(TextView.java:4307)

我这样打电话

myAsyncTask().execute(source, listDrawable, textView.getContext());
                    return listDrawable;
                }
            }, new MyTagHandler());
      textView.setText(htmlText);

谁能帮我解决上面的问题

您可能正在使用函数 Html.fromHtml(String source),该函数已针对 Android SDK API >= 24 (Anrdroid 7.0) 进行了更改,以获取针对 textView.setText(htmlText) 的 Spannable,因此生成的 Spannable 现在略有不同。因此,它不再适合旧​​的已弃用 functions/attributes。

因此,您有三种选择来解决您的问题:

  • (EDIT:) 可能是最简单的解决方案:如果您在列表元素中使用 android 属性 android:singleLine=true,请使用 android:maxLines="1"相反。
  • 基本上,您必须照顾好您的 Spannable 及其边界,尤其是当您自己创建 Spannable 时。
  • 只使用支持的HTML标签,可以直接从源代码中读取出来(here)。
  • 您也可以使用函数 loadDataWithBaseURL(...) 来解决您的问题,但是您必须使用 webview,这对于列表元素来说可能是一个很大的过载。