summaryrefslogtreecommitdiff
path: root/core/java/android/widget/ActivityChooserView.java
diff options
context:
space:
mode:
Diffstat (limited to 'core/java/android/widget/ActivityChooserView.java')
-rw-r--r--core/java/android/widget/ActivityChooserView.java21
1 files changed, 16 insertions, 5 deletions
diff --git a/core/java/android/widget/ActivityChooserView.java b/core/java/android/widget/ActivityChooserView.java
index f500b3921384..5b69aa8fb1e9 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;
@@ -92,6 +93,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.
*/
private final DataSetObserver mModelDataSetOberver = new DataSetObserver() {
@@ -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));