Workaround spanned/html bug

This commit is contained in:
M66B 2020-04-23 19:45:33 +02:00
parent 965bd51891
commit 6366ddc053
1 changed files with 15 additions and 7 deletions

View File

@ -28,6 +28,7 @@ import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Build;
import android.text.Html;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.TextUtils;
@ -477,12 +478,6 @@ public class HtmlHelper {
String style = null;
String clazz = element.attr("class");
// Workaround TextView not supporting nested colors
List<Element> parents = element.parents();
Collections.reverse(parents);
for (Element parent : parents)
style = mergeStyles(style, parent.attr("style"), "color");
// Class style
style = processStyles(element.tagName(), clazz, style, sheets);
@ -1766,7 +1761,7 @@ public class HtmlHelper {
if (i != spanned.length())
spanned = (Spanned) spanned.subSequence(0, i);
return spanned;
return reverseSpans(spanned);
}
static String toHtml(Spanned spanned) {
@ -1793,4 +1788,17 @@ public class HtmlHelper {
return doc.html();
}
static Spanned reverseSpans(Spanned spanned) {
Object[] spans = spanned.getSpans(0, spanned.length(), Object.class);
Spannable reverse = Spannable.Factory.getInstance().newSpannable(spanned.toString());
if (spans != null && spans.length > 0)
for (int i = spans.length - 1; i >= 0; --i)
reverse.setSpan(
spans[i],
spanned.getSpanStart(spans[i]),
spanned.getSpanEnd(spans[i]),
spanned.getSpanFlags(spans[i]));
return reverse;
}
}