Keyguard slice views - fix alignment

Some icons use slight insets by default, which causes alignment issues
with left/right aligned keyguard slice content. Access the wrapped
drawable to remove the inset.

Fixes: 175953174
Test: manual (go/hsv to check alignment)
Change-Id: Iaf5115d771e7aa6bf4f8f6a7434d0a2a0d05da21
This commit is contained in:
Matt Pietal
2021-01-05 14:32:20 -05:00
parent bf36a7f543
commit c5abc7738b

View File

@@ -26,6 +26,7 @@ import android.content.Context;
import android.content.res.Resources;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.InsetDrawable;
import android.graphics.text.LineBreaker;
import android.net.Uri;
import android.os.Trace;
@@ -239,6 +240,12 @@ public class KeyguardSliceView extends LinearLayout {
final int iconSize = mHasHeader ? mIconSizeWithHeader : mIconSize;
iconDrawable = icon.getIcon().loadDrawable(mContext);
if (iconDrawable != null) {
if ((iconDrawable instanceof InsetDrawable)
&& mLockScreenMode == KeyguardUpdateMonitor.LOCK_SCREEN_MODE_LAYOUT_1) {
// System icons (DnD) use insets which are fine for centered slice content
// but will cause a slight indent for left/right-aligned slice views
iconDrawable = ((InsetDrawable) iconDrawable).getDrawable();
}
final int width = (int) (iconDrawable.getIntrinsicWidth()
/ (float) iconDrawable.getIntrinsicHeight() * iconSize);
iconDrawable.setBounds(0, 0, Math.max(width, 1), iconSize);