Merge "Display shortcut inline with item title in cascading menu" into pi-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
ae957a780e
@@ -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})
|
||||
@@ -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.
|
||||
|
||||
@@ -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;
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
82
core/res/res/layout/cascading_menu_item_layout.xml
Normal file
82
core/res/res/layout/cascading_menu_item_layout.xml
Normal file
@@ -0,0 +1,82 @@
|
||||
<?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>
|
||||
@@ -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" />
|
||||
|
||||
Reference in New Issue
Block a user