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