Bug 1132747 - Set the padding for share in the context menu on Lollipop. r=mhaigh
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
8
mobile/android/base/resources/values-v21/dimens.xml
Normal file
8
mobile/android/base/resources/values-v21/dimens.xml
Normal 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>
|
||||
@@ -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>
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user