From ca231ab2d83c6fd7503d6e5095276048d32bc718 Mon Sep 17 00:00:00 2001 From: Dimitry Ivanov Date: Mon, 26 Nov 2018 18:20:05 +0300 Subject: [PATCH] AsyncDrawable fix no dimensions bug --- .../noties/markwon/image/AsyncDrawable.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/markwon/src/main/java/ru/noties/markwon/image/AsyncDrawable.java b/markwon/src/main/java/ru/noties/markwon/image/AsyncDrawable.java index 205830c0..a9bde47a 100644 --- a/markwon/src/main/java/ru/noties/markwon/image/AsyncDrawable.java +++ b/markwon/src/main/java/ru/noties/markwon/image/AsyncDrawable.java @@ -23,6 +23,9 @@ public class AsyncDrawable extends Drawable { private int canvasWidth; private float textSize; + // @since 2.0.1 for use-cases when image is loaded faster than span is drawn and knows canvas width + private boolean waitingForDemensions; + /** * @since 1.0.1 */ @@ -88,6 +91,19 @@ public class AsyncDrawable extends Drawable { this.result = result; this.result.setCallback(callback); + initBounds(); + } + + private void initBounds() { + + if (canvasWidth == 0) { + // we still have no bounds - wait for them + waitingForDemensions = true; + return; + } + + waitingForDemensions = false; + final Rect bounds = resolveBounds(); result.setBounds(bounds); setBounds(bounds); @@ -102,6 +118,10 @@ public class AsyncDrawable extends Drawable { public void initWithKnownDimensions(int width, float textSize) { this.canvasWidth = width; this.textSize = textSize; + + if (waitingForDemensions) { + initBounds(); + } } @Override