summaryrefslogtreecommitdiffstats
path: root/core/java/android/widget
diff options
context:
space:
mode:
authorAdam Powell <adamp@google.com>2012-03-08 12:24:32 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-03-08 12:24:32 -0800
commitf8f0c8ea4bee6f3316676f65b8e0369dff520e13 (patch)
tree43c43dec140d8827b2a935bca22dbde2edd765dc /core/java/android/widget
parentebc34f820c5ba25352ec0eba11ee07787591f391 (diff)
parent7507d3d31cb3d0ca190efc9d6b7ead5d6336f8d6 (diff)
downloadframeworks_base-f8f0c8ea4bee6f3316676f65b8e0369dff520e13.zip
frameworks_base-f8f0c8ea4bee6f3316676f65b8e0369dff520e13.tar.gz
frameworks_base-f8f0c8ea4bee6f3316676f65b8e0369dff520e13.tar.bz2
Merge "Fix measurement issues with Spinner and ListPopupWindow"
Diffstat (limited to 'core/java/android/widget')
-rw-r--r--core/java/android/widget/ListPopupWindow.java22
-rw-r--r--core/java/android/widget/Spinner.java1
2 files changed, 21 insertions, 2 deletions
diff --git a/core/java/android/widget/ListPopupWindow.java b/core/java/android/widget/ListPopupWindow.java
index 5c97593..f4d5d74 100644
--- a/core/java/android/widget/ListPopupWindow.java
+++ b/core/java/android/widget/ListPopupWindow.java
@@ -1080,6 +1080,8 @@ public class ListPopupWindow {
if (!mDropDownVerticalOffsetSet) {
mDropDownVerticalOffset = -mTempRect.top;
}
+ } else {
+ mTempRect.setEmpty();
}
// Max height available on the screen for a popup.
@@ -1092,7 +1094,25 @@ public class ListPopupWindow {
return maxHeight + padding;
}
- final int listContent = mDropDownList.measureHeightOfChildren(MeasureSpec.UNSPECIFIED,
+ final int childWidthSpec;
+ switch (mDropDownWidth) {
+ case ViewGroup.LayoutParams.WRAP_CONTENT:
+ childWidthSpec = MeasureSpec.makeMeasureSpec(
+ mContext.getResources().getDisplayMetrics().widthPixels -
+ (mTempRect.left + mTempRect.right),
+ MeasureSpec.AT_MOST);
+ break;
+ case ViewGroup.LayoutParams.MATCH_PARENT:
+ childWidthSpec = MeasureSpec.makeMeasureSpec(
+ mContext.getResources().getDisplayMetrics().widthPixels -
+ (mTempRect.left + mTempRect.right),
+ MeasureSpec.EXACTLY);
+ break;
+ default:
+ childWidthSpec = MeasureSpec.makeMeasureSpec(mDropDownWidth, MeasureSpec.EXACTLY);
+ break;
+ }
+ final int listContent = mDropDownList.measureHeightOfChildren(childWidthSpec,
0, ListView.NO_POSITION, maxHeight - otherHeights, -1);
// add padding only if the list has items in it, that way we don't show
// the popup if it is not needed
diff --git a/core/java/android/widget/Spinner.java b/core/java/android/widget/Spinner.java
index 89c506f..6540613 100644
--- a/core/java/android/widget/Spinner.java
+++ b/core/java/android/widget/Spinner.java
@@ -26,7 +26,6 @@ import android.database.DataSetObserver;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
-import android.util.DisplayMetrics;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;