diff --git a/res/values/dimens.xml b/res/values/dimens.xml index bc63c061f8..270c92e871 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -41,6 +41,7 @@ 22dp + 42dp 24dp diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java index d301787cbc..009e098fef 100644 --- a/src/com/android/launcher3/DeviceProfile.java +++ b/src/com/android/launcher3/DeviceProfile.java @@ -158,6 +158,9 @@ public class DeviceProfile { public final int hotseatBarSidePaddingStartPx; public final int hotseatBarSidePaddingEndPx; + public final float qsbBottomMarginOriginalPx; + public int qsbBottomMarginPx; + // All apps public int allAppsOpenVerticalTranslate; public int allAppsCellHeightPx; @@ -331,6 +334,10 @@ public class DeviceProfile { res.getDimensionPixelSize(R.dimen.dynamic_grid_hotseat_extra_vertical_size); updateHotseatIconSize(pxFromDp(inv.iconSize, mMetrics, 1f)); + qsbBottomMarginOriginalPx = isScalableGrid + ? res.getDimensionPixelSize(R.dimen.scalable_grid_qsb_bottom_margin) + : 0; + overviewTaskMarginPx = res.getDimensionPixelSize(R.dimen.overview_task_margin); overviewTaskIconSizePx = isTablet && FeatureFlags.ENABLE_OVERVIEW_GRID.get() ? res.getDimensionPixelSize( @@ -359,6 +366,8 @@ public class DeviceProfile { extraHotseatBottomPadding = Math.round(paddingHotseatBottom * iconScale); hotseatBarSizePx += extraHotseatBottomPadding; + + qsbBottomMarginPx = Math.round(qsbBottomMarginOriginalPx * iconScale); } else if (!isVerticalBarLayout() && isPhone && isTallDevice) { // We increase the hotseat size when there is extra space. // ie. For a display with a large aspect ratio, we can keep the icons on the workspace diff --git a/src/com/android/launcher3/Hotseat.java b/src/com/android/launcher3/Hotseat.java index ff380ce1ae..42b4e89c13 100644 --- a/src/com/android/launcher3/Hotseat.java +++ b/src/com/android/launcher3/Hotseat.java @@ -206,8 +206,14 @@ public class Hotseat extends CellLayout implements Insettable { int freeSpace = dp.isTaskbarPresent ? dp.workspacePadding.bottom : dp.hotseatBarSizePx - dp.hotseatCellHeightPx - mQsbHeight; - return (int) (freeSpace * QSB_CENTER_FACTOR) - + (dp.isTaskbarPresent ? dp.taskbarSize : dp.getInsets().bottom); + + if (dp.isScalableGrid && dp.qsbBottomMarginPx <= freeSpace) { + return dp.qsbBottomMarginPx; + } else { + return (int) (freeSpace * QSB_CENTER_FACTOR) + (dp.isTaskbarPresent + ? dp.taskbarSize + : dp.getInsets().bottom); + } } /**