diff --git a/graphics/java/android/graphics/drawable/LayerDrawable.java b/graphics/java/android/graphics/drawable/LayerDrawable.java index 51c183f582bed..e8b3f64989b5d 100644 --- a/graphics/java/android/graphics/drawable/LayerDrawable.java +++ b/graphics/java/android/graphics/drawable/LayerDrawable.java @@ -64,10 +64,8 @@ public class LayerDrawable extends Drawable implements Drawable.Callback { private int[] mPaddingR; private int[] mPaddingB; - private final Rect mCachedPadding = new Rect(); private final Rect mTmpRect = new Rect(); private boolean mMutated; - private boolean mHasCachedPadding; /** * Create a new layer drawable with the list of specified layers. @@ -229,15 +227,18 @@ public class LayerDrawable extends Drawable implements Drawable.Callback { } /** - * Look for a layer with the given id, and returns its {@link Drawable}. + * Looks for a layer with the given ID and returns its {@link Drawable}. + *
+ * If multiple layers are found for the given ID, returns the + * {@link Drawable} for the matching layer at the highest index. * * @param id The layer ID to search for. - * @return The {@link Drawable} of the layer that has the given id in the hierarchy or null. + * @return The {@link Drawable} for the highest-indexed layer that has the + * given ID, or null if not found. */ public Drawable findDrawableByLayerId(int id) { final ChildDrawable[] layers = mLayerState.mChildren; - final int N = mLayerState.mNum; - for (int i = 0; i < N; i++) { + for (int i = mLayerState.mNum - 1; i >= 0; i--) { if (layers[i].mId == id) { return layers[i].mDrawable; } @@ -314,11 +315,6 @@ public class LayerDrawable extends Drawable implements Drawable.Callback { } childDrawable.mDrawable = drawable; - - if (refreshChildPadding(i, childDrawable)) { - invalidatePadding(); - } - return true; } } @@ -328,7 +324,6 @@ public class LayerDrawable extends Drawable implements Drawable.Callback { /** * Specifies the insets in pixels for the drawable at the specified index. - * Insets are used to adjust the drawable bounds. * * @param index the index of the drawable to adjust * @param l number of pixels to add to the left bound @@ -342,7 +337,6 @@ public class LayerDrawable extends Drawable implements Drawable.Callback { childDrawable.mInsetT = t; childDrawable.mInsetR = r; childDrawable.mInsetB = b; - invalidatePadding(); } /** @@ -351,14 +345,12 @@ public class LayerDrawable extends Drawable implements Drawable.Callback { * * @param mode padding mode, one of: *