Use availableHeightPx to calculate the max height for recommended widgets
heightPx doesn't take device orientation and system taskbar into account.
Bug: 185508758
Test: Open widgets tray, observe recommended widgets. Rotate the screen
and observe recommended widgets.
Change-Id: I96f1817f96ba643e54e1d2599225254489091d03
diff --git a/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java b/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java
index 70127c5..15957ec 100644
--- a/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java
+++ b/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java
@@ -467,8 +467,8 @@
Log.d(TAG, "Header view height is 0 when inflating recommended widgets");
}
float maxTableHeight =
- (mLauncher.getDeviceProfile().heightPx - mTabsHeight - getHeaderViewHeight())
- * RECOMMENDATION_TABLE_HEIGHT_RATIO;
+ (mLauncher.getDeviceProfile().availableHeightPx - mTabsHeight
+ - getHeaderViewHeight()) * RECOMMENDATION_TABLE_HEIGHT_RATIO;
List<ArrayList<WidgetItem>> recommendedWidgetsInTable =
WidgetsTableUtils.groupWidgetItemsIntoTable(recommendedWidgets,
mMaxSpansPerRow);
diff --git a/src/com/android/launcher3/widget/picker/WidgetsRecommendationTableLayout.java b/src/com/android/launcher3/widget/picker/WidgetsRecommendationTableLayout.java
index 1bfffc2..824b580 100644
--- a/src/com/android/launcher3/widget/picker/WidgetsRecommendationTableLayout.java
+++ b/src/com/android/launcher3/widget/picker/WidgetsRecommendationTableLayout.java
@@ -42,7 +42,6 @@
private static final String TAG = "WidgetsRecommendationTableLayout";
private static final float DOWN_SCALE_RATIO = 0.9f;
private static final float MAX_DOWN_SCALE_RATIO = 0.5f;
- private final DeviceProfile mDeviceProfile;
private final float mWidgetCellTextViewsHeight;
private float mRecommendationTableMaxHeight = Float.MAX_VALUE;
@@ -56,7 +55,6 @@
public WidgetsRecommendationTableLayout(Context context, AttributeSet attrs) {
super(context, attrs);
- mDeviceProfile = Launcher.getLauncher(context).getDeviceProfile();
// There are 1 row for title, 1 row for dimension and 2 rows for description.
mWidgetCellTextViewsHeight = 4 * getResources().getDimension(R.dimen.widget_cell_font_size);
}
@@ -143,11 +141,12 @@
}
// A naive estimation of the widgets recommendation table height without inflation.
float totalHeight = 0;
+ DeviceProfile deviceProfile = Launcher.getLauncher(getContext()).getDeviceProfile();
for (int i = 0; i < recommendedWidgetsInTable.size(); i++) {
List<WidgetItem> widgetItems = recommendedWidgetsInTable.get(i);
float rowHeight = 0;
for (int j = 0; j < widgetItems.size(); j++) {
- float previewHeight = widgetItems.get(j).spanY * mDeviceProfile.allAppsCellHeightPx
+ float previewHeight = widgetItems.get(j).spanY * deviceProfile.allAppsCellHeightPx
* previewScale;
rowHeight = Math.max(rowHeight, previewHeight + mWidgetCellTextViewsHeight);
}