Skip drawing invisible bullets

pull/199/head
M66B 4 years ago
parent eb110a581c
commit 1c0535ec32

@ -32,18 +32,30 @@ import androidx.annotation.RequiresApi;
public class BulletSpanEx extends BulletSpan { public class BulletSpanEx extends BulletSpan {
private int indentWidth; private int indentWidth;
private int level; private int level;
private String ltype;
public BulletSpanEx(int indentWidth, int gapWidth, int color, int level) { public BulletSpanEx(int indentWidth, int gapWidth, int color, int level) {
this(indentWidth, gapWidth, color, level, null);
}
@RequiresApi(api = Build.VERSION_CODES.P)
public BulletSpanEx(int indentWidth, int gapWidth, int color, int bulletRadius, int level) {
this(indentWidth, gapWidth, color, bulletRadius, level, null);
}
public BulletSpanEx(int indentWidth, int gapWidth, int color, int level, String ltype) {
super(gapWidth, color); super(gapWidth, color);
this.indentWidth = indentWidth; this.indentWidth = indentWidth;
this.level = level; this.level = level;
this.ltype = ltype;
} }
@RequiresApi(api = Build.VERSION_CODES.P) @RequiresApi(api = Build.VERSION_CODES.P)
public BulletSpanEx(int indentWidth, int gapWidth, int color, int bulletRadius, int level) { public BulletSpanEx(int indentWidth, int gapWidth, int color, int bulletRadius, int level, String ltype) {
super(gapWidth, color, bulletRadius); super(gapWidth, color, bulletRadius);
this.indentWidth = indentWidth; this.indentWidth = indentWidth;
this.level = level; this.level = level;
this.ltype = ltype;
} }
int getLevel() { int getLevel() {
@ -63,6 +75,8 @@ public class BulletSpanEx extends BulletSpan {
@Override @Override
public void drawLeadingMargin(@NonNull Canvas canvas, @NonNull Paint paint, int x, int dir, int top, int baseline, int bottom, @NonNull CharSequence text, int start, int end, boolean first, @Nullable Layout layout) { public void drawLeadingMargin(@NonNull Canvas canvas, @NonNull Paint paint, int x, int dir, int top, int baseline, int bottom, @NonNull CharSequence text, int start, int end, boolean first, @Nullable Layout layout) {
if ("none".equals(ltype))
return;
super.drawLeadingMargin(canvas, paint, x + indentWidth * (level + 1) * dir, dir, top, baseline, bottom, text, start, end, first, layout); super.drawLeadingMargin(canvas, paint, x + indentWidth * (level + 1) * dir, dir, top, baseline, bottom, text, start, end, first, layout);
} }
} }

@ -824,6 +824,10 @@ public class HtmlHelper {
} }
} }
break; break;
case "list-style-type":
element.attr("x-list-style", value);
break;
} }
} }
@ -2741,10 +2745,11 @@ public class HtmlHelper {
level--; level--;
if (type == null || "ul".equals(type.tagName())) { if (type == null || "ul".equals(type.tagName())) {
String ltype = element.attr("x-list-style");
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P)
setSpan(ssb, new BulletSpanEx(bulletIndent, bulletGap, colorAccent, level), start, ssb.length()); setSpan(ssb, new BulletSpanEx(bulletIndent, bulletGap, colorAccent, level, ltype), start, ssb.length());
else else
setSpan(ssb, new BulletSpanEx(bulletIndent, bulletGap, colorAccent, bulletRadius, level), start, ssb.length()); setSpan(ssb, new BulletSpanEx(bulletIndent, bulletGap, colorAccent, bulletRadius, level, ltype), start, ssb.length());
} else { } else {
// https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ol // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ol
int index = 0; int index = 0;
@ -2934,7 +2939,8 @@ public class HtmlHelper {
.removeAttr("x-column") .removeAttr("x-column")
.removeAttr("x-dashed") .removeAttr("x-dashed")
.removeAttr("x-tracking") .removeAttr("x-tracking")
.removeAttr("x-border"); .removeAttr("x-border")
.removeAttr("x-list-style");
} }
static Spanned fromHtml(@NonNull String html, Context context) { static Spanned fromHtml(@NonNull String html, Context context) {

Loading…
Cancel
Save