Merge "Display shortcut inline with item title in cascading menu" into pi-dev

am: ae957a780e

Change-Id: I484cb6f01191ac5ce044fd94f7e32970aec2dfb1
This commit is contained in:
Vladislav Kaznacheev
2018-03-09 14:29:00 +00:00
committed by android-build-merger
5 changed files with 92 additions and 6 deletions

View File

@@ -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.

View File

@@ -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();

View File

@@ -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;

View 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>

View File

@@ -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" />