diff options
Diffstat (limited to 'src/com/android/launcher3/LauncherRootView.java')
-rw-r--r-- | src/com/android/launcher3/LauncherRootView.java | 33 |
1 files changed, 30 insertions, 3 deletions
diff --git a/src/com/android/launcher3/LauncherRootView.java b/src/com/android/launcher3/LauncherRootView.java index 1c6ca8713..71ccd85fc 100644 --- a/src/com/android/launcher3/LauncherRootView.java +++ b/src/com/android/launcher3/LauncherRootView.java @@ -1,17 +1,22 @@ package com.android.launcher3; +import android.annotation.TargetApi; +import android.app.ActivityManager; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; import android.util.AttributeSet; +import android.view.View; public class LauncherRootView extends InsettableFrameLayout { private final Paint mOpaquePaint; private boolean mDrawRightInsetBar; + private View mAlignedView; + public LauncherRootView(Context context, AttributeSet attrs) { super(context, attrs); @@ -21,10 +26,32 @@ public class LauncherRootView extends InsettableFrameLayout { } @Override + protected void onFinishInflate() { + if (getChildCount() > 0) { + // LauncherRootView contains only one child, which should be aligned + // based on the horizontal insets. + mAlignedView = getChildAt(0); + } + super.onFinishInflate(); + } + + @TargetApi(23) + @Override protected boolean fitSystemWindows(Rect insets) { - setInsets(insets); - mDrawRightInsetBar = mInsets.right > 0 && LauncherAppState - .getInstance().getInvariantDeviceProfile().isRightInsetOpaque; + mDrawRightInsetBar = insets.right > 0 && + (!Utilities.ATLEAST_MARSHMALLOW || + getContext().getSystemService(ActivityManager.class).isLowRamDevice()); + setInsets(mDrawRightInsetBar ? new Rect(0, insets.top, 0, insets.bottom) : insets); + + if (mAlignedView != null) { + // Apply margins on aligned view to handle left/right insets. + MarginLayoutParams lp = (MarginLayoutParams) mAlignedView.getLayoutParams(); + if (lp.leftMargin != insets.left || lp.rightMargin != insets.right) { + lp.leftMargin = insets.left; + lp.rightMargin = insets.right; + mAlignedView.setLayoutParams(lp); + } + } return true; // I'll take it from here } |