Loading core/java/com/android/internal/view/menu/CascadingMenuPopup.java +2 −1 Original line number Diff line number Diff line Loading @@ -47,6 +47,7 @@ import com.android.internal.util.Preconditions; */ final class CascadingMenuPopup extends MenuPopup implements MenuPresenter, OnKeyListener, PopupWindow.OnDismissListener { private static final int ITEM_LAYOUT = com.android.internal.R.layout.cascading_menu_item_layout; @Retention(RetentionPolicy.SOURCE) @IntDef({HORIZ_POSITION_LEFT, HORIZ_POSITION_RIGHT}) Loading Loading @@ -348,7 +349,7 @@ final class CascadingMenuPopup extends MenuPopup implements MenuPresenter, OnKey */ private void showMenu(@NonNull MenuBuilder menu) { final LayoutInflater inflater = LayoutInflater.from(mContext); final MenuAdapter adapter = new MenuAdapter(menu, inflater, mOverflowOnly); final MenuAdapter adapter = new MenuAdapter(menu, inflater, mOverflowOnly, ITEM_LAYOUT); // Apply "force show icon" setting. There are 3 cases: // (1) This is the top level menu and icon spacing is forced. Add spacing. Loading core/java/com/android/internal/view/menu/MenuAdapter.java +5 −4 Original line number Diff line number Diff line Loading @@ -23,8 +23,6 @@ import android.widget.BaseAdapter; import java.util.ArrayList; public class MenuAdapter extends BaseAdapter { static final int ITEM_LAYOUT = com.android.internal.R.layout.popup_menu_item_layout; MenuBuilder mAdapterMenu; private int mExpandedIndex = -1; Loading @@ -32,11 +30,14 @@ public class MenuAdapter extends BaseAdapter { private boolean mForceShowIcon; private final boolean mOverflowOnly; private final LayoutInflater mInflater; private final int mItemLayoutRes; public MenuAdapter(MenuBuilder menu, LayoutInflater inflater, boolean overflowOnly) { public MenuAdapter(MenuBuilder menu, LayoutInflater inflater, boolean overflowOnly, int itemLayoutRes) { mOverflowOnly = overflowOnly; mInflater = inflater; mAdapterMenu = menu; mItemLayoutRes = itemLayoutRes; findExpandedIndex(); } Loading Loading @@ -78,7 +79,7 @@ public class MenuAdapter extends BaseAdapter { public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = mInflater.inflate(ITEM_LAYOUT, parent, false); convertView = mInflater.inflate(mItemLayoutRes, parent, false); } final int currGroupId = getItem(position).getGroupId(); Loading core/java/com/android/internal/view/menu/StandardMenuPopup.java +2 −1 Original line number Diff line number Diff line Loading @@ -43,6 +43,7 @@ import com.android.internal.util.Preconditions; */ final class StandardMenuPopup extends MenuPopup implements OnDismissListener, OnItemClickListener, MenuPresenter, OnKeyListener { private static final int ITEM_LAYOUT = com.android.internal.R.layout.popup_menu_item_layout; private final Context mContext; Loading Loading @@ -116,7 +117,7 @@ final class StandardMenuPopup extends MenuPopup implements OnDismissListener, On mMenu = menu; mOverflowOnly = overflowOnly; final LayoutInflater inflater = LayoutInflater.from(context); mAdapter = new MenuAdapter(menu, inflater, mOverflowOnly); mAdapter = new MenuAdapter(menu, inflater, mOverflowOnly, ITEM_LAYOUT); mPopupStyleAttr = popupStyleAttr; mPopupStyleRes = popupStyleRes; Loading core/res/res/layout/cascading_menu_item_layout.xml 0 → 100644 +82 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <!-- Copyright (C) 2018 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <!-- Keep in sync with popup_menu_item_layout.xml (which only differs in the title and shortcut position). --> <com.android.internal.view.menu.ListMenuItemView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:minWidth="196dip" android:orientation="vertical" > <ImageView android:id="@+id/group_divider" android:layout_width="match_parent" android:layout_height="1dip" android:layout_marginTop="4dip" android:layout_marginBottom="4dip" android:background="@drawable/list_divider_material" /> <LinearLayout android:id="@+id/content" android:layout_width="match_parent" android:layout_height="?attr/dropdownListPreferredItemHeight" android:paddingEnd="16dip" android:duplicateParentState="true" > <!-- Icon will be inserted here. --> <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginStart="16dip" android:textAppearance="?attr/textAppearanceLargePopupMenu" android:singleLine="true" android:duplicateParentState="true" android:textAlignment="viewStart" /> <Space android:layout_width="0dip" android:layout_height="1dip" android:layout_weight="1"/> <TextView android:id="@+id/shortcut" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginStart="16dip" android:textAppearance="?attr/textAppearanceSmallPopupMenu" android:singleLine="true" android:duplicateParentState="true" android:textAlignment="viewEnd" /> <ImageView android:id="@+id/submenuarrow" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginStart="8dp" android:scaleType="center" android:visibility="gone" /> <!-- Checkbox, and/or radio button will be inserted here. --> </LinearLayout> </com.android.internal.view.menu.ListMenuItemView> core/res/res/values/symbols.xml +1 −0 Original line number Diff line number Diff line Loading @@ -1421,6 +1421,7 @@ <java-symbol type="layout" name="action_menu_layout" /> <java-symbol type="layout" name="action_mode_close_item" /> <java-symbol type="layout" name="alert_dialog" /> <java-symbol type="layout" name="cascading_menu_item_layout" /> <java-symbol type="layout" name="choose_account" /> <java-symbol type="layout" name="choose_account_row" /> <java-symbol type="layout" name="choose_account_type" /> Loading Loading
core/java/com/android/internal/view/menu/CascadingMenuPopup.java +2 −1 Original line number Diff line number Diff line Loading @@ -47,6 +47,7 @@ import com.android.internal.util.Preconditions; */ final class CascadingMenuPopup extends MenuPopup implements MenuPresenter, OnKeyListener, PopupWindow.OnDismissListener { private static final int ITEM_LAYOUT = com.android.internal.R.layout.cascading_menu_item_layout; @Retention(RetentionPolicy.SOURCE) @IntDef({HORIZ_POSITION_LEFT, HORIZ_POSITION_RIGHT}) Loading Loading @@ -348,7 +349,7 @@ final class CascadingMenuPopup extends MenuPopup implements MenuPresenter, OnKey */ private void showMenu(@NonNull MenuBuilder menu) { final LayoutInflater inflater = LayoutInflater.from(mContext); final MenuAdapter adapter = new MenuAdapter(menu, inflater, mOverflowOnly); final MenuAdapter adapter = new MenuAdapter(menu, inflater, mOverflowOnly, ITEM_LAYOUT); // Apply "force show icon" setting. There are 3 cases: // (1) This is the top level menu and icon spacing is forced. Add spacing. Loading
core/java/com/android/internal/view/menu/MenuAdapter.java +5 −4 Original line number Diff line number Diff line Loading @@ -23,8 +23,6 @@ import android.widget.BaseAdapter; import java.util.ArrayList; public class MenuAdapter extends BaseAdapter { static final int ITEM_LAYOUT = com.android.internal.R.layout.popup_menu_item_layout; MenuBuilder mAdapterMenu; private int mExpandedIndex = -1; Loading @@ -32,11 +30,14 @@ public class MenuAdapter extends BaseAdapter { private boolean mForceShowIcon; private final boolean mOverflowOnly; private final LayoutInflater mInflater; private final int mItemLayoutRes; public MenuAdapter(MenuBuilder menu, LayoutInflater inflater, boolean overflowOnly) { public MenuAdapter(MenuBuilder menu, LayoutInflater inflater, boolean overflowOnly, int itemLayoutRes) { mOverflowOnly = overflowOnly; mInflater = inflater; mAdapterMenu = menu; mItemLayoutRes = itemLayoutRes; findExpandedIndex(); } Loading Loading @@ -78,7 +79,7 @@ public class MenuAdapter extends BaseAdapter { public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = mInflater.inflate(ITEM_LAYOUT, parent, false); convertView = mInflater.inflate(mItemLayoutRes, parent, false); } final int currGroupId = getItem(position).getGroupId(); Loading
core/java/com/android/internal/view/menu/StandardMenuPopup.java +2 −1 Original line number Diff line number Diff line Loading @@ -43,6 +43,7 @@ import com.android.internal.util.Preconditions; */ final class StandardMenuPopup extends MenuPopup implements OnDismissListener, OnItemClickListener, MenuPresenter, OnKeyListener { private static final int ITEM_LAYOUT = com.android.internal.R.layout.popup_menu_item_layout; private final Context mContext; Loading Loading @@ -116,7 +117,7 @@ final class StandardMenuPopup extends MenuPopup implements OnDismissListener, On mMenu = menu; mOverflowOnly = overflowOnly; final LayoutInflater inflater = LayoutInflater.from(context); mAdapter = new MenuAdapter(menu, inflater, mOverflowOnly); mAdapter = new MenuAdapter(menu, inflater, mOverflowOnly, ITEM_LAYOUT); mPopupStyleAttr = popupStyleAttr; mPopupStyleRes = popupStyleRes; Loading
core/res/res/layout/cascading_menu_item_layout.xml 0 → 100644 +82 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <!-- Copyright (C) 2018 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <!-- Keep in sync with popup_menu_item_layout.xml (which only differs in the title and shortcut position). --> <com.android.internal.view.menu.ListMenuItemView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:minWidth="196dip" android:orientation="vertical" > <ImageView android:id="@+id/group_divider" android:layout_width="match_parent" android:layout_height="1dip" android:layout_marginTop="4dip" android:layout_marginBottom="4dip" android:background="@drawable/list_divider_material" /> <LinearLayout android:id="@+id/content" android:layout_width="match_parent" android:layout_height="?attr/dropdownListPreferredItemHeight" android:paddingEnd="16dip" android:duplicateParentState="true" > <!-- Icon will be inserted here. --> <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginStart="16dip" android:textAppearance="?attr/textAppearanceLargePopupMenu" android:singleLine="true" android:duplicateParentState="true" android:textAlignment="viewStart" /> <Space android:layout_width="0dip" android:layout_height="1dip" android:layout_weight="1"/> <TextView android:id="@+id/shortcut" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginStart="16dip" android:textAppearance="?attr/textAppearanceSmallPopupMenu" android:singleLine="true" android:duplicateParentState="true" android:textAlignment="viewEnd" /> <ImageView android:id="@+id/submenuarrow" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginStart="8dp" android:scaleType="center" android:visibility="gone" /> <!-- Checkbox, and/or radio button will be inserted here. --> </LinearLayout> </com.android.internal.view.menu.ListMenuItemView>
core/res/res/values/symbols.xml +1 −0 Original line number Diff line number Diff line Loading @@ -1421,6 +1421,7 @@ <java-symbol type="layout" name="action_menu_layout" /> <java-symbol type="layout" name="action_mode_close_item" /> <java-symbol type="layout" name="alert_dialog" /> <java-symbol type="layout" name="cascading_menu_item_layout" /> <java-symbol type="layout" name="choose_account" /> <java-symbol type="layout" name="choose_account_row" /> <java-symbol type="layout" name="choose_account_type" /> Loading