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

时间:2016-10-13 10:04:24

标签: java android html 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)

我打电话给

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

任何人都可以帮助我解决上述问题

1 个答案:

答案 0 :(得分:6)

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

因此,您有三种方法可以解决您的问题:

  • 编辑:)可能是最简单的解决方案:如果您在列表元素中使用了android属性android:singleLine=true,请改用android:maxLines="1"
  • 基本上,你必须照顾你的Spannables和他们的bounderies,特别是如果你自己创建你的Spannables。
  • 仅使用支持的HTML标记,可以直接从源代码(here)中读取。
  • 你也可以使用函数loadDataWithBaseURL(...)来解决你的问题,但是你必须使用webview,这可能是列表元素的一个重大过载。