Home Controls: Adjust width of menu for tablets.

Menu is usually half of the width for phones. Check the dp width of the
device and default to size of largest child view + padding if the dp
width of the device is over some threshold.

Bug: 217373193
Test: Tested on tablet device

Change-Id: I567891e70607428b965c3d2c55ec8ced210300fc
This commit is contained in:
Aaron Liu
2022-02-01 20:16:13 +00:00
parent 43cb57eebf
commit 128460ed36

View File

@@ -40,6 +40,7 @@ public class GlobalActionsPopupMenu extends ListPopupWindow {
private boolean mIsDropDownMode;
private int mMenuVerticalPadding = 0;
private int mGlobalActionsSidePadding = 0;
private int mMaximumWidthThresholdDp = 800;
private ListAdapter mAdapter;
private AdapterView.OnItemLongClickListener mOnItemLongClickListener;
@@ -92,6 +93,8 @@ public class GlobalActionsPopupMenu extends ListPopupWindow {
// width should be between [.5, .9] of screen
int parentWidth = res.getSystem().getDisplayMetrics().widthPixels;
float parentDensity = res.getSystem().getDisplayMetrics().density;
float parentWidthDp = parentWidth / parentDensity;
int widthSpec = MeasureSpec.makeMeasureSpec(
(int) (parentWidth * 0.9), MeasureSpec.AT_MOST);
int maxWidth = 0;
@@ -101,9 +104,12 @@ public class GlobalActionsPopupMenu extends ListPopupWindow {
int w = child.getMeasuredWidth();
maxWidth = Math.max(w, maxWidth);
}
int width = Math.max(maxWidth, (int) (parentWidth * 0.5));
listView.setPadding(0, mMenuVerticalPadding, 0, mMenuVerticalPadding);
int width = maxWidth;
if (parentWidthDp < mMaximumWidthThresholdDp) {
width = Math.max(maxWidth, (int) (parentWidth * 0.5));
}
listView.setPadding(0, mMenuVerticalPadding, 0, mMenuVerticalPadding);
setWidth(width);
if (getAnchorView().getLayoutDirection() == LayoutDirection.LTR) {
setHorizontalOffset(getAnchorView().getWidth() - mGlobalActionsSidePadding - width);