Bug 1394378 - Wrap drawable to support tinting across different API levels. r?nechen
According to the comment of `DrawableCompat.wrap(Drawable)`[1], a drawable should be wrapped
to support tinting across the different API levels.
[1] https://android.googlesource.com/platform/frameworks/support/+/android-6.0.1_r67/v4/java/android/support/v4/graphics/drawable/DrawableCompat.java#329
MozReview-Commit-ID: JJ4alkFF1og
--- a/mobile/android/base/java/org/mozilla/gecko/home/TabMenuStripLayout.java
+++ b/mobile/android/base/java/org/mozilla/gecko/home/TabMenuStripLayout.java
@@ -65,17 +65,17 @@ class TabMenuStripLayout extends ThemedL
tabContentStart = a.getDimensionPixelSize(R.styleable.TabMenuStrip_tabsMarginLeft, 0);
activeTextColor = a.getColor(R.styleable.TabMenuStrip_activeTextColor,
ResourcesCompat.getColor(getResources(), R.color.text_and_tabs_tray_grey, null));
inactiveTextColor = a.getColorStateList(R.styleable.TabMenuStrip_inactiveTextColor);
stripColor = a.getColorStateList(R.styleable.TabMenuStrip_stripColor);
a.recycle();
if (stripResId != -1) {
- strip = getResources().getDrawable(stripResId);
+ strip = ResourcesCompat.getDrawable(getResources(), stripResId, null);
if (stripColor != null) {
final int backgroundTintColor = stripColor.getColorForState(getDrawableState(), Color.TRANSPARENT);
DrawableCompat.setTint(strip, backgroundTintColor);
}
}
setWillNotDraw(false);
@@ -292,16 +292,17 @@ class TabMenuStripLayout extends ThemedL
@Override
public void setPrivateMode(boolean isPrivate) {
final boolean modeChanged = (isPrivateMode() != isPrivate);
super.setPrivateMode(isPrivate);
if (modeChanged && stripColor != null) {
+ strip = DrawableCompat.wrap(strip);
final int backgroundTintColor = stripColor.getColorForState(getDrawableState(), Color.TRANSPARENT);
DrawableCompat.setTint(strip, backgroundTintColor);
}
}
private class ViewClickListener implements OnClickListener {
private final int mIndex;