From 5f14845b27deb06ca1f2e55e291f2ba936acca2a Mon Sep 17 00:00:00 2001 From: Samuel Schultze Date: Mon, 13 Oct 2025 18:43:32 -0300 Subject: [PATCH] fix(android): proper image view scaling for ScaleTypes.CENTER (#10899) --- .../main/java/org/nativescript/widgets/ImageView.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/packages/ui-mobile-base/android/widgets/src/main/java/org/nativescript/widgets/ImageView.java b/packages/ui-mobile-base/android/widgets/src/main/java/org/nativescript/widgets/ImageView.java index 4996b0f54..81c7de963 100644 --- a/packages/ui-mobile-base/android/widgets/src/main/java/org/nativescript/widgets/ImageView.java +++ b/packages/ui-mobile-base/android/widgets/src/main/java/org/nativescript/widgets/ImageView.java @@ -364,6 +364,17 @@ public class ImageView extends androidx.appcompat.widget.AppCompatImageView impl float uniformScale; float pivotX, pivotY; switch (this.getScaleType()) { + case CENTER: + uniformScale = 1; + matrix.postTranslate((innerWidth - bitmapWidth) / 2, (innerHeight - bitmapHeight) / 2); + matrix.postScale(uniformScale, uniformScale, innerWidth / 2, innerHeight / 2); + canvas.clipRect( + borderLeftWidth + (innerWidth - bitmapWidth * uniformScale) / 2, + borderTopWidth + (innerHeight - bitmapHeight * uniformScale) / 2, + borderLeftWidth + (innerWidth + bitmapWidth * uniformScale) / 2, + borderTopWidth + (innerHeight + bitmapHeight * uniformScale) / 2 + ); + break; case FIT_CENTER: // aspectFit uniformScale = Math.min(fittingScaleX, fittingScaleY); matrix.postTranslate((innerWidth - bitmapWidth) / 2, (innerHeight - bitmapHeight) / 2);