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

Anb*_*nbu 5 html java android textview spannablestring

尝试在“文本”视图中渲染文本时出现以下错误

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)
Run Code Online (Sandbox Code Playgroud)

我打电话像

myAsyncTask().execute(source, listDrawable, textView.getContext());
                    return listDrawable;
                }
            }, new MyTagHandler());
      textView.setText(htmlText);
Run Code Online (Sandbox Code Playgroud)

谁能帮我解决上述问题

mat*_*w11 6

您可能正在使用的功能Html.fromHtml(String source)(已更改为Android SDK API >= 24 (Anrdroid 7.0))来获取Spannable的值textView.setText(htmlText),因此生成的Spannable现在有所不同。因此,它不再适合旧​​的不推荐使用的功能/属性。

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

  • 编辑:)可能是最简单的解决方案:如果您android:singleLine=true在列表元素中使用android属性,请android:maxLines="1"改用。
  • 基本上,您必须照顾好Spannable及其边界,尤其是当您自己创建Spannable时。
  • 仅使用支持的HTML标记,这些标记可以直接从源代码(此处)中读出。
  • 您也可以使用该功能loadDataWithBaseURL(...)解决问题,但随后必须使用Webview,这可能会给list元素带来很大的负担。