diff --git a/res/values/dimens.xml b/res/values/dimens.xml index 1025abaa67..076853e8d2 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -20,13 +20,16 @@ 6dp 48dp - - 80dp + + 94dp 8dp 8dp + 0dp + + -4dp 4dp - -6dp + -6dp 16dp 20dp 4dp diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java index c6da5844a0..61c4b1a22d 100644 --- a/src/com/android/launcher3/DeviceProfile.java +++ b/src/com/android/launcher3/DeviceProfile.java @@ -103,6 +103,8 @@ public class DeviceProfile { // QSB private int searchBarWidgetInternalPaddingTop, searchBarWidgetInternalPaddingBottom; private int searchBarTopPaddingPx; + private int tallSearchBarNegativeTopPaddingPx, normalSearchBarTopExtraPaddingPx; + private int searchBarTopExtraPaddingPx; // One of the above. private int normalSearchBarBottomPaddingPx, tallSearchBarBottomPaddingPx; private int searchBarBottomPaddingPx; // One of the above. private int normalSearchBarSpaceHeightPx, tallSearchBarSpaceHeightPx; @@ -216,6 +218,10 @@ public class DeviceProfile { R.dimen.qsb_internal_padding_top); searchBarWidgetInternalPaddingBottom = res.getDimensionPixelSize( R.dimen.qsb_internal_padding_bottom); + normalSearchBarTopExtraPaddingPx = res.getDimensionPixelSize( + R.dimen.dynamic_grid_search_bar_extra_top_padding); + tallSearchBarNegativeTopPaddingPx = res.getDimensionPixelSize( + R.dimen.dynamic_grid_search_bar_negative_top_padding_short); if (isTablet && !isVerticalBarLayout()) { searchBarTopPaddingPx = searchBarWidgetInternalPaddingTop; normalSearchBarBottomPaddingPx = searchBarWidgetInternalPaddingBottom + @@ -225,8 +231,9 @@ public class DeviceProfile { searchBarTopPaddingPx = searchBarWidgetInternalPaddingTop; normalSearchBarBottomPaddingPx = searchBarWidgetInternalPaddingBottom + res.getDimensionPixelSize(R.dimen.dynamic_grid_search_bar_bottom_padding); - tallSearchBarBottomPaddingPx = searchBarWidgetInternalPaddingBottom + - res.getDimensionPixelSize(R.dimen.dynamic_grid_search_bar_bottom_padding_short); + tallSearchBarBottomPaddingPx = searchBarWidgetInternalPaddingBottom + + res.getDimensionPixelSize( + R.dimen.dynamic_grid_search_bar_bottom_negative_padding_short); } // Calculate the actual text height @@ -272,7 +279,7 @@ public class DeviceProfile { /** Returns the amount of extra space to allocate to the search bar for vertical padding. */ private int getSearchBarTotalVerticalPadding() { - return searchBarTopPaddingPx + searchBarBottomPaddingPx; + return searchBarTopPaddingPx + searchBarTopExtraPaddingPx + searchBarBottomPaddingPx; } /** Returns the width and height of the search bar, ignoring any padding. */ @@ -427,10 +434,13 @@ public class DeviceProfile { hotseatBarHeightPx = shortHotseatBarHeightPx; searchBarSpaceHeightPx = tallSearchBarSpaceHeightPx; searchBarBottomPaddingPx = tallSearchBarBottomPaddingPx; + searchBarTopExtraPaddingPx = isPhone ? tallSearchBarNegativeTopPaddingPx + : normalSearchBarTopExtraPaddingPx; } else { hotseatBarHeightPx = normalHotseatBarHeightPx; searchBarSpaceHeightPx = normalSearchBarSpaceHeightPx; searchBarBottomPaddingPx = normalSearchBarBottomPaddingPx; + searchBarTopExtraPaddingPx = normalSearchBarTopExtraPaddingPx; } } @@ -445,6 +455,7 @@ public class DeviceProfile { lp = (FrameLayout.LayoutParams) searchBar.getLayoutParams(); lp.width = searchBarBounds.width(); lp.height = searchBarBounds.height(); + lp.topMargin = searchBarTopExtraPaddingPx; if (hasVerticalBarLayout) { // Vertical search bar space -- The search bar is fixed in the layout to be on the left // of the screen regardless of RTL diff --git a/tests/src/com/android/launcher3/InvariantDeviceProfileTest.java b/tests/src/com/android/launcher3/InvariantDeviceProfileTest.java index db3f72f3aa..21df60109f 100644 --- a/tests/src/com/android/launcher3/InvariantDeviceProfileTest.java +++ b/tests/src/com/android/launcher3/InvariantDeviceProfileTest.java @@ -108,15 +108,9 @@ public class InvariantDeviceProfileTest extends AndroidTestCase { if (!android.os.Build.DEVICE.equals("hammerhead")) { return; } - assertEquals(mInvariantProfile.numRows, 4); - assertEquals(mInvariantProfile.numColumns, 4); - assertEquals((int) mInvariantProfile.numHotseatIcons, 5); - - DeviceProfile landscapeProfile = mInvariantProfile.landscapeProfile; - DeviceProfile portraitProfile = mInvariantProfile.portraitProfile; - - assertEquals(portraitProfile.allAppsNumCols, 3); - assertEquals(landscapeProfile.allAppsNumCols, 5); // not used + assertEquals(4, mInvariantProfile.numRows); + assertEquals(4, mInvariantProfile.numColumns); + assertEquals(5, mInvariantProfile.numHotseatIcons); } // Add more tests for other devices, however, running them once on a single device is enough @@ -172,10 +166,11 @@ public class InvariantDeviceProfileTest extends AndroidTestCase { Rect landscapeBounds = landscapeProfile.getSearchBarBounds(true); // RTL shouldn't matter. int landscapeHeight = (int) Utilities.dpiFromPx(landscapeBounds.height(), resources.getDisplayMetrics()); - if (portraitProfile.isTablet) { - assertEquals(8 + 80 + 24, portraitHeight); + if (portraitProfile.isPhone) { + // This fails on some devices due to http://b/26884580 (portraitHeight is 101, not 100). + assertEquals(4 + 94 + 2, portraitHeight); } else { - assertEquals(8 + 80 + 2, portraitHeight); + assertEquals(8 + 94 + 24, portraitHeight); } // Make sure the height that we pass in the widget options bundle is the height of the // search bar + 8dps padding top and bottom. @@ -183,7 +178,7 @@ public class InvariantDeviceProfileTest extends AndroidTestCase { int portraitWidgetOptsHeight = portraitDimens.y; Point landscapeDimens = landscapeProfile.getSearchBarDimensForWidgetOpts(resources); int landscapeWidgetOptsHeight = landscapeDimens.y; - assertEquals(8 + 80 + 8, (int) Utilities.dpiFromPx(portraitWidgetOptsHeight, + assertEquals(8 + 94 + 8, (int) Utilities.dpiFromPx(portraitWidgetOptsHeight, resources.getDisplayMetrics())); if (!landscapeProfile.isVerticalBarLayout()) { assertEquals(portraitHeight, landscapeHeight);