diff --git a/packages/SystemUI/res/layout/controls_more_item.xml b/packages/SystemUI/res/layout/controls_more_item.xml index f24850e11e467..df03787d567cb 100644 --- a/packages/SystemUI/res/layout/controls_more_item.xml +++ b/packages/SystemUI/res/layout/controls_more_item.xml @@ -18,5 +18,7 @@ style="@style/Control.MenuItem" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_gravity="start" /> + android:layout_gravity="start" + android:paddingStart="@dimen/control_menu_horizontal_padding" + android:paddingEnd="@dimen/control_menu_horizontal_padding"/> diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml index 81020432daa77..07ba5eb1802d7 100644 --- a/packages/SystemUI/res/values/styles.xml +++ b/packages/SystemUI/res/values/styles.xml @@ -396,6 +396,7 @@ diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java index d66b9ac3d21ab..0f3a94b743426 100644 --- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java +++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java @@ -306,7 +306,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, RingerModeTracker ringerModeTracker, SysUiState sysUiState, @Main Handler handler, ControlsComponent controlsComponent, CurrentUserContextTracker currentUserContextTracker) { - mContext = new ContextThemeWrapper(context, com.android.systemui.R.style.qs_theme); + mContext = context; mWindowManagerFuncs = windowManagerFuncs; mAudioManager = audioManager; mDreamManager = iDreamManager; @@ -564,8 +564,8 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, mItems.clear(); mOverflowItems.clear(); - String[] defaultActions = getDefaultActions(); + String[] defaultActions = getDefaultActions(); // make sure emergency affordance action is first, if needed if (mEmergencyAffordanceManager.needsEmergencyAffordance()) { addActionItem(new EmergencyAffordanceAction()); @@ -1341,18 +1341,11 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, View view = convertView != null ? convertView : LayoutInflater.from(mContext).inflate(viewLayoutResource, parent, false); TextView textView = (TextView) view; - textView.setOnClickListener(v -> onClickItem(position)); if (action.getMessageResId() != 0) { textView.setText(action.getMessageResId()); } else { textView.setText(action.getMessage()); } - - if (action instanceof LongPressAction) { - textView.setOnLongClickListener(v -> onLongClickItem(position)); - } else { - textView.setOnLongClickListener(null); - } return textView; } @@ -2064,11 +2057,15 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, } private ListPopupWindow createPowerOverflowPopup() { - ListPopupWindow popup = new GlobalActionsPopupMenu( + GlobalActionsPopupMenu popup = new GlobalActionsPopupMenu( new ContextThemeWrapper( - mContext, - com.android.systemui.R.style.Control_ListPopupWindow + mContext, + com.android.systemui.R.style.Control_ListPopupWindow ), false /* isDropDownMode */); + popup.setOnItemClickListener( + (parent, view, position, id) -> mOverflowAdapter.onClickItem(position)); + popup.setOnItemLongClickListener( + (parent, view, position, id) -> mOverflowAdapter.onLongClickItem(position)); View overflowButton = findViewById(com.android.systemui.R.id.global_actions_overflow_button); popup.setAnchorView(overflowButton); diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsPopupMenu.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsPopupMenu.java index a5ced7b574b72..6b71f1e9d86fe 100644 --- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsPopupMenu.java +++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsPopupMenu.java @@ -22,6 +22,7 @@ import android.content.res.Resources; import android.view.View; import android.view.View.MeasureSpec; import android.view.WindowManager; +import android.widget.AdapterView; import android.widget.ListAdapter; import android.widget.ListPopupWindow; import android.widget.ListView; @@ -37,10 +38,10 @@ import com.android.systemui.R; public class GlobalActionsPopupMenu extends ListPopupWindow { private Context mContext; private boolean mIsDropDownMode; - private int mMenuHorizontalPadding = 0; private int mMenuVerticalPadding = 0; private int mGlobalActionsSidePadding = 0; private ListAdapter mAdapter; + private AdapterView.OnItemLongClickListener mOnItemLongClickListener; public GlobalActionsPopupMenu(@NonNull Context context, boolean isDropDownMode) { super(context); @@ -57,8 +58,6 @@ public class GlobalActionsPopupMenu extends ListPopupWindow { mGlobalActionsSidePadding = res.getDimensionPixelSize(R.dimen.global_actions_side_margin); if (!isDropDownMode) { mMenuVerticalPadding = res.getDimensionPixelSize(R.dimen.control_menu_vertical_padding); - mMenuHorizontalPadding = - res.getDimensionPixelSize(R.dimen.control_menu_horizontal_padding); } } @@ -76,6 +75,9 @@ public class GlobalActionsPopupMenu extends ListPopupWindow { public void show() { // need to call show() first in order to construct the listView super.show(); + if (mOnItemLongClickListener != null) { + getListView().setOnItemLongClickListener(mOnItemLongClickListener); + } ListView listView = getListView(); Resources res = mContext.getResources(); @@ -92,7 +94,7 @@ public class GlobalActionsPopupMenu extends ListPopupWindow { // width should be between [.5, .9] of screen int parentWidth = res.getSystem().getDisplayMetrics().widthPixels; int widthSpec = MeasureSpec.makeMeasureSpec( - (int) (parentWidth * 0.9) - 2 * mMenuHorizontalPadding, MeasureSpec.AT_MOST); + (int) (parentWidth * 0.9), MeasureSpec.AT_MOST); int maxWidth = 0; for (int i = 0; i < mAdapter.getCount(); i++) { View child = mAdapter.getView(i, null, listView); @@ -100,10 +102,8 @@ public class GlobalActionsPopupMenu extends ListPopupWindow { int w = child.getMeasuredWidth(); maxWidth = Math.max(w, maxWidth); } - int width = Math.max(maxWidth, (int) (parentWidth * 0.5) - 2 * mMenuHorizontalPadding) - + 2 * mMenuHorizontalPadding; - listView.setPadding(mMenuHorizontalPadding, mMenuVerticalPadding, - mMenuHorizontalPadding, mMenuVerticalPadding); + int width = Math.max(maxWidth, (int) (parentWidth * 0.5)); + listView.setPadding(0, mMenuVerticalPadding, 0, mMenuVerticalPadding); setWidth(width); setHorizontalOffset(getAnchorView().getWidth() - mGlobalActionsSidePadding - width); @@ -111,4 +111,8 @@ public class GlobalActionsPopupMenu extends ListPopupWindow { super.show(); } + + public void setOnItemLongClickListener(AdapterView.OnItemLongClickListener listener) { + mOnItemLongClickListener = listener; + } }