From 414051b8b1e31b69ca622d68f391245f1989500b Mon Sep 17 00:00:00 2001 From: Svetoslav Ganov Date: Sun, 17 Jul 2011 22:28:42 -0700 Subject: [PATCH] Update the style of the action bar share UI 1. Made the background of the default and expand buttons change when pressed. 2. When the share UI is shown on the overflow the "Show all" menu item was present event if all items are shown. 3. The width of the popup for picking an item was different for the action view and overflow case. bug:5039747 Change-Id: I72afbcf86c93596c7eba4d70c002eab060ff31f8 --- .../android/widget/ActivityChooserModel.java | 1 - .../android/widget/ActivityChooserView.java | 21 ++++++++++++++----- .../android/widget/ShareActionProvider.java | 19 ++++++++++------- core/res/res/layout/activity_chooser_view.xml | 8 ++----- .../activity_chooser_view_list_item.xml | 1 + core/res/res/values/styles.xml | 10 +++++++++ 6 files changed, 40 insertions(+), 20 deletions(-) diff --git a/core/java/android/widget/ActivityChooserModel.java b/core/java/android/widget/ActivityChooserModel.java index 32c44d86aec98..d7429b38d2ad3 100644 --- a/core/java/android/widget/ActivityChooserModel.java +++ b/core/java/android/widget/ActivityChooserModel.java @@ -431,7 +431,6 @@ public class ActivityChooserModel extends DataSetObservable { */ public Intent chooseActivity(int index) { ActivityResolveInfo chosenActivity = mActivites.get(index); - ActivityResolveInfo defaultActivity = mActivites.get(0); ComponentName chosenName = new ComponentName( chosenActivity.resolveInfo.activityInfo.packageName, diff --git a/core/java/android/widget/ActivityChooserView.java b/core/java/android/widget/ActivityChooserView.java index f500b39213840..5b69aa8fb1e9e 100644 --- a/core/java/android/widget/ActivityChooserView.java +++ b/core/java/android/widget/ActivityChooserView.java @@ -20,6 +20,7 @@ import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; +import android.content.res.Resources; import android.content.res.TypedArray; import android.database.DataSetObserver; import android.graphics.Canvas; @@ -91,6 +92,11 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod */ private final ImageButton mDefaultActionButton; + /** + * The maximal width of the list popup. + */ + private final int mListPopupMaxWidth; + /** * Observer for the model data. */ @@ -185,7 +191,7 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod mExpandActivityOverflowButton = (ImageButton) findViewById(R.id.expand_activities_button); mExpandActivityOverflowButton.setOnClickListener(mCallbacks); - mExpandActivityOverflowButton.setBackgroundDrawable(expandActivityOverflowButtonDrawable); + mExpandActivityOverflowButton.setImageDrawable(expandActivityOverflowButtonDrawable); mAdapter = new ActivityChooserViewAdapter(); mAdapter.registerDataSetObserver(new DataSetObserver() { @@ -195,6 +201,10 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod updateButtons(); } }); + + Resources resources = context.getResources(); + mListPopupMaxWidth = Math.max(resources.getDisplayMetrics().widthPixels / 2, + resources.getDimensionPixelSize(com.android.internal.R.dimen.config_prefDialogWidth)); } /** @@ -220,7 +230,7 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod * @param drawable The drawable. */ public void setExpandActivityOverflowButtonDrawable(Drawable drawable) { - mExpandActivityOverflowButton.setBackgroundDrawable(drawable); + mExpandActivityOverflowButton.setImageDrawable(drawable); } /** @@ -264,7 +274,8 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod } else { mAdapter.setShowDefaultActivity(false); } - popupWindow.setContentWidth(mAdapter.measureContentWidth()); + final int contentWidth = Math.min(mAdapter.measureContentWidth(), mListPopupMaxWidth); + popupWindow.setContentWidth(contentWidth); popupWindow.show(); } } @@ -390,7 +401,7 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod } ResolveInfo activity = mAdapter.getDefaultActivity(); PackageManager packageManager = mContext.getPackageManager(); - mDefaultActionButton.setBackgroundDrawable(activity.loadIcon(packageManager)); + mDefaultActionButton.setImageDrawable(activity.loadIcon(packageManager)); } else { mDefaultActionButton.setVisibility(View.INVISIBLE); mExpandActivityOverflowButton.setEnabled(false); @@ -574,7 +585,7 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod // Set the icon ImageView iconView = (ImageView) convertView.findViewById(R.id.icon); ResolveInfo activity = (ResolveInfo) getItem(position); - iconView.setBackgroundDrawable(activity.loadIcon(packageManager)); + iconView.setImageDrawable(activity.loadIcon(packageManager)); // Set the title. TextView titleView = (TextView) convertView.findViewById(R.id.title); titleView.setText(activity.loadLabel(packageManager)); diff --git a/core/java/android/widget/ShareActionProvider.java b/core/java/android/widget/ShareActionProvider.java index 2e0cc62113d9f..665109a0b2e0e 100644 --- a/core/java/android/widget/ShareActionProvider.java +++ b/core/java/android/widget/ShareActionProvider.java @@ -162,14 +162,17 @@ public class ShareActionProvider extends ActionProvider { .setOnMenuItemClickListener(mOnMenuItemClickListener); } - // Add a sub-menu for showing all activities as a list item. - SubMenu expandedSubMenu = subMenu.addSubMenu(Menu.NONE, collapsedActivityCount, - collapsedActivityCount, mContext.getString(R.string.activity_chooser_view_see_all)); - for (int i = 0; i < expandedActivityCount; i++) { - ResolveInfo activity = dataModel.getActivity(i); - expandedSubMenu.add(0, i, i, activity.loadLabel(packageManager)) - .setIcon(activity.loadIcon(packageManager)) - .setOnMenuItemClickListener(mOnMenuItemClickListener); + if (collapsedActivityCount < expandedActivityCount) { + // Add a sub-menu for showing all activities as a list item. + SubMenu expandedSubMenu = subMenu.addSubMenu(Menu.NONE, collapsedActivityCount, + collapsedActivityCount, + mContext.getString(R.string.activity_chooser_view_see_all)); + for (int i = 0; i < expandedActivityCount; i++) { + ResolveInfo activity = dataModel.getActivity(i); + expandedSubMenu.add(0, i, i, activity.loadLabel(packageManager)) + .setIcon(activity.loadIcon(packageManager)) + .setOnMenuItemClickListener(mOnMenuItemClickListener); + } } } diff --git a/core/res/res/layout/activity_chooser_view.xml b/core/res/res/layout/activity_chooser_view.xml index 902b3c0612cb4..50b18784b1386 100644 --- a/core/res/res/layout/activity_chooser_view.xml +++ b/core/res/res/layout/activity_chooser_view.xml @@ -23,13 +23,9 @@ style="?android:attr/actionButtonStyle"> + style="@style/Widget.ActivityChooserViewButton" /> + style="@style/Widget.ActivityChooserViewButton" /> diff --git a/core/res/res/layout/activity_chooser_view_list_item.xml b/core/res/res/layout/activity_chooser_view_list_item.xml index f90044e4494e6..88498d992c35c 100644 --- a/core/res/res/layout/activity_chooser_view_list_item.xml +++ b/core/res/res/layout/activity_chooser_view_list_item.xml @@ -20,6 +20,7 @@ android:layout_height="?android:attr/dropdownListPreferredItemHeight" android:paddingLeft="16dip" android:paddingRight="16dip" + android:minWidth="196dip" android:background="?android:attr/activatedBackgroundIndicator" android:orientation="vertical" > diff --git a/core/res/res/values/styles.xml b/core/res/res/values/styles.xml index 6b751469610f7..5b5e7c350f388 100644 --- a/core/res/res/values/styles.xml +++ b/core/res/res/values/styles.xml @@ -713,6 +713,16 @@ modeLarge + +