Skip to content

Commit 6b45884

Browse files
committed
Fallback logic for button shape update logic for lollipop
1 parent 0e5c393 commit 6b45884

File tree

1 file changed

+21
-14
lines changed

1 file changed

+21
-14
lines changed

lib/java/com/google/android/material/button/MaterialButtonHelper.java

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,6 @@
1616

1717
package com.google.android.material.button;
1818

19-
import com.google.android.material.R;
20-
21-
import static androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP;
22-
2319
import android.content.Context;
2420
import android.content.res.ColorStateList;
2521
import android.content.res.TypedArray;
@@ -31,12 +27,15 @@
3127
import android.graphics.drawable.RippleDrawable;
3228
import android.os.Build.VERSION;
3329
import android.os.Build.VERSION_CODES;
34-
import androidx.core.graphics.drawable.DrawableCompat;
35-
import androidx.core.view.ViewCompat;
30+
3631
import androidx.annotation.Dimension;
3732
import androidx.annotation.NonNull;
3833
import androidx.annotation.Nullable;
3934
import androidx.annotation.RestrictTo;
35+
import androidx.core.graphics.drawable.DrawableCompat;
36+
import androidx.core.view.ViewCompat;
37+
38+
import com.google.android.material.R;
4039
import com.google.android.material.color.MaterialColors;
4140
import com.google.android.material.internal.ViewUtils;
4241
import com.google.android.material.resources.MaterialResources;
@@ -46,6 +45,8 @@
4645
import com.google.android.material.shape.ShapeAppearanceModel;
4746
import com.google.android.material.shape.Shapeable;
4847

48+
import static androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP;
49+
4950
/** @hide */
5051
@RestrictTo(LIBRARY_GROUP)
5152
class MaterialButtonHelper {
@@ -359,14 +360,20 @@ private MaterialShapeDrawable getSurfaceColorStrokeDrawable() {
359360
}
360361

361362
private void updateButtonShape(@NonNull ShapeAppearanceModel shapeAppearanceModel) {
362-
if (getMaterialShapeDrawable() != null) {
363-
getMaterialShapeDrawable().setShapeAppearanceModel(shapeAppearanceModel);
364-
}
365-
if (getSurfaceColorStrokeDrawable() != null) {
366-
getSurfaceColorStrokeDrawable().setShapeAppearanceModel(shapeAppearanceModel);
367-
}
368-
if (getMaskDrawable() != null) {
369-
getMaskDrawable().setShapeAppearanceModel(shapeAppearanceModel);
363+
if (IS_LOLLIPOP) {
364+
// There seems to be a bug to drawables that is affecting Lollipop, since invalidation is not
365+
// changing an existing drawable shape. This is a fallback
366+
updateBackground();
367+
} else {
368+
if (getMaterialShapeDrawable() != null) {
369+
getMaterialShapeDrawable().setShapeAppearanceModel(shapeAppearanceModel);
370+
}
371+
if (getSurfaceColorStrokeDrawable() != null) {
372+
getSurfaceColorStrokeDrawable().setShapeAppearanceModel(shapeAppearanceModel);
373+
}
374+
if (getMaskDrawable() != null) {
375+
getMaskDrawable().setShapeAppearanceModel(shapeAppearanceModel);
376+
}
370377
}
371378
}
372379

0 commit comments

Comments
 (0)