Fix rounding of padding in NinePatchDrawable

Bug: 73088142
Test: Test app at https://buganizer.corp.google.com/issues/73088142#comment6
Test: GridWidgetTest.testItemDecorationAndMarginsAndOpticalBounds

In computeBitmapSize, treat padding as a size in scaleFromDensity. This
results in rounding instead of truncating. This matches the way optical
insets are handled. It also matches the padding we would have gotten if
we had scaled at decode time.

Change-Id: I7d3a83ba824b8dc81187ce9b2d9889d4a87f88ac
This commit is contained in:
Leon Scroggins III
2018-04-13 11:57:08 -04:00
parent e5d97dd6f9
commit 4534745f53

View File

@@ -692,13 +692,13 @@ public class NinePatchDrawable extends Drawable {
mPadding = new Rect();
}
mPadding.left = Drawable.scaleFromDensity(
sourcePadding.left, sourceDensity, targetDensity, false);
sourcePadding.left, sourceDensity, targetDensity, true);
mPadding.top = Drawable.scaleFromDensity(
sourcePadding.top, sourceDensity, targetDensity, false);
sourcePadding.top, sourceDensity, targetDensity, true);
mPadding.right = Drawable.scaleFromDensity(
sourcePadding.right, sourceDensity, targetDensity, false);
sourcePadding.right, sourceDensity, targetDensity, true);
mPadding.bottom = Drawable.scaleFromDensity(
sourcePadding.bottom, sourceDensity, targetDensity, false);
sourcePadding.bottom, sourceDensity, targetDensity, true);
} else {
mPadding = null;
}