Bug 1132747 - Set the padding for share in the context menu on Lollipop. r=mhaigh

This commit is contained in:
Michael Comella
2015-03-27 17:59:06 -07:00
parent 7d51d2992a
commit 71ca4ed285
6 changed files with 57 additions and 11 deletions

View File

@@ -141,9 +141,11 @@ public class GeckoMenuItem implements MenuItem {
public View getActionView() {
if (mActionProvider != null) {
if (getActionEnum() == MenuItem.SHOW_AS_ACTION_IF_ROOM) {
return mActionProvider.onCreateActionView(SECONDARY_ACTION_BAR_HISTORY_SIZE, false);
return mActionProvider.onCreateActionView(SECONDARY_ACTION_BAR_HISTORY_SIZE,
GeckoActionProvider.ActionViewType.DEFAULT);
} else {
return mActionProvider.onCreateActionView(QUICK_SHARE_ACTION_BAR_HISTORY_SIZE, true);
return mActionProvider.onCreateActionView(QUICK_SHARE_ACTION_BAR_HISTORY_SIZE,
GeckoActionProvider.ActionViewType.QUICK_SHARE_ICON);
}
}

View File

@@ -38,7 +38,7 @@ public class MenuItemActionView extends LinearLayout
@TargetApi(14)
public MenuItemActionView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs);
super(context, attrs, defStyle);
LayoutInflater.from(context).inflate(R.layout.menu_item_action_view, this);
mMenuItem = (MenuItemDefault) findViewById(R.id.menu_item);
@@ -165,4 +165,18 @@ public class MenuItemActionView extends LinearLayout
listener.onClick(view);
}
}
/**
* Update the styles if this view is being used in the context menus.
*
* Ideally, we just use different layout files and styles to set this, but
* MenuItemActionView is too integrated into GeckoActionProvider to provide
* an easy separation so instead I provide this hack. I'm sorry.
*/
public void initContextMenuStyles() {
final int defaultContextMenuPadding = getContext().getResources().getDimensionPixelOffset(
R.dimen.context_menu_item_horizontal_padding);
mMenuItem.setPadding(defaultContextMenuPadding, getPaddingTop(),
defaultContextMenuPadding, getPaddingBottom());
}
}

View File

@@ -179,7 +179,8 @@ public class PromptListAdapter extends ArrayAdapter<PromptListItem> {
final GeckoActionProvider provider = GeckoActionProvider.getForType(item.getIntent().getType(), getContext());
provider.setIntent(item.getIntent());
final MenuItemActionView view = (MenuItemActionView) provider.onCreateActionView();
final MenuItemActionView view = (MenuItemActionView) provider.onCreateActionView(
GeckoActionProvider.ActionViewType.CONTEXT_MENU);
// If a quickshare button is clicked, we need to close the dialog.
view.addActionButtonClickListener(new View.OnClickListener() {
@Override

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<resources>
<dimen name="context_menu_item_horizontal_padding">17dp</dimen>
</resources>

View File

@@ -105,6 +105,8 @@
<dimen name="doorhanger_section_padding_large">30dp</dimen>
<dimen name="doorhanger_icon_size">60dp</dimen>
<dimen name="context_menu_item_horizontal_padding">10dp</dimen>
<dimen name="flow_layout_spacing">6dp</dimen>
<dimen name="menu_item_icon">21dp</dimen>
<dimen name="menu_item_textsize">16sp</dimen>

View File

@@ -90,18 +90,31 @@ public class GeckoActionProvider {
/**
* Creates the action view using the default history size.
*/
public View onCreateActionView() {
return onCreateActionView(MAX_HISTORY_SIZE_DEFAULT, false);
public View onCreateActionView(final ActionViewType viewType) {
return onCreateActionView(MAX_HISTORY_SIZE_DEFAULT, viewType);
}
public View onCreateActionView(final int maxHistorySize, final boolean isForQuickShareBar) {
public View onCreateActionView(final int maxHistorySize, final ActionViewType viewType) {
// Create the view and set its data model.
ActivityChooserModel dataModel = ActivityChooserModel.get(mContext, mHistoryFileName);
final MenuItemActionView view;
if (isForQuickShareBar) {
view = new QuickShareBarActionView(mContext, null);
} else {
switch (viewType) {
case DEFAULT:
view = new MenuItemActionView(mContext, null);
break;
case QUICK_SHARE_ICON:
view = new QuickShareBarActionView(mContext, null);
break;
case CONTEXT_MENU:
view = new MenuItemActionView(mContext, null);
view.initContextMenuStyles();
break;
default:
throw new IllegalArgumentException(
"Unknown " + ActionViewType.class.getSimpleName() + ": " + viewType);
}
view.addActionButtonClickListener(mCallbacks);
@@ -251,4 +264,10 @@ public class GeckoActionProvider {
Telemetry.sendUIEvent(TelemetryContract.Event.SHARE, TelemetryContract.Method.BUTTON);
}
}
public enum ActionViewType {
DEFAULT,
QUICK_SHARE_ICON,
CONTEXT_MENU,
}
}