summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Adam Powell <adamp@google.com> 2011-08-15 17:05:42 -0700
committer Android (Google) Code Review <android-gerrit@google.com> 2011-08-15 17:05:42 -0700
commit6a23d0906607dc22938170db9bc2bfa92d879d47 (patch)
tree9ce21c7377054ba5744e5302fe67d7b2e9d11022
parent152abefccb6925fd1092ac6424d7720b43375fc8 (diff)
parent62e2bdecc21819a71c04204f20fc051886fdabd6 (diff)
Merge "Fix bug 5165223 Fix Holo Spinner item/dropdown alignment."
-rw-r--r--core/java/android/widget/ListPopupWindow.java2
-rw-r--r--core/java/android/widget/PopupWindow.java8
-rw-r--r--core/java/android/widget/Spinner.java21
-rw-r--r--core/res/res/values/styles.xml4
4 files changed, 29 insertions, 6 deletions
diff --git a/core/java/android/widget/ListPopupWindow.java b/core/java/android/widget/ListPopupWindow.java
index 307959b0cac5..a2910afc86eb 100644
--- a/core/java/android/widget/ListPopupWindow.java
+++ b/core/java/android/widget/ListPopupWindow.java
@@ -449,6 +449,8 @@ public class ListPopupWindow {
if (popupBackground != null) {
popupBackground.getPadding(mTempRect);
mDropDownWidth = mTempRect.left + mTempRect.right + width;
+ } else {
+ setWidth(width);
}
}
diff --git a/core/java/android/widget/PopupWindow.java b/core/java/android/widget/PopupWindow.java
index 36927ca434ef..4d45c2fee094 100644
--- a/core/java/android/widget/PopupWindow.java
+++ b/core/java/android/widget/PopupWindow.java
@@ -1065,9 +1065,10 @@ public class PopupWindow {
private boolean findDropDownPosition(View anchor, WindowManager.LayoutParams p,
int xoff, int yoff) {
+ final int anchorHeight = anchor.getHeight();
anchor.getLocationInWindow(mDrawingLocation);
p.x = mDrawingLocation[0] + xoff;
- p.y = mDrawingLocation[1] + anchor.getHeight() + yoff;
+ p.y = mDrawingLocation[1] + anchorHeight + yoff;
boolean onTop = false;
@@ -1076,9 +1077,12 @@ public class PopupWindow {
anchor.getLocationOnScreen(mScreenLocation);
final Rect displayFrame = new Rect();
anchor.getWindowVisibleDisplayFrame(displayFrame);
+
+ int screenY = mScreenLocation[1] + anchorHeight + yoff;
final View root = anchor.getRootView();
- if (p.y + mPopupHeight > displayFrame.bottom || p.x + mPopupWidth - root.getWidth() > 0) {
+ if (screenY + mPopupHeight > displayFrame.bottom ||
+ p.x + mPopupWidth - root.getWidth() > 0) {
// if the drop down disappears at the bottom of the screen. we try to
// scroll a parent scrollview or move the drop down back up on top of
// the edit box
diff --git a/core/java/android/widget/Spinner.java b/core/java/android/widget/Spinner.java
index 2fba18b12ec8..27d44bf9efe8 100644
--- a/core/java/android/widget/Spinner.java
+++ b/core/java/android/widget/Spinner.java
@@ -714,14 +714,27 @@ public class Spinner extends AbsSpinner implements OnClickListener {
@Override
public void show() {
+ final int spinnerPaddingLeft = Spinner.this.getPaddingLeft();
if (mDropDownWidth == WRAP_CONTENT) {
- setWidth(Math.max(measureContentWidth((SpinnerAdapter) mAdapter, getBackground()),
- Spinner.this.getWidth()));
+ final int spinnerWidth = Spinner.this.getWidth();
+ final int spinnerPaddingRight = Spinner.this.getPaddingRight();
+ setContentWidth(Math.max(
+ measureContentWidth((SpinnerAdapter) mAdapter, getBackground()),
+ spinnerWidth - spinnerPaddingLeft - spinnerPaddingRight));
} else if (mDropDownWidth == MATCH_PARENT) {
- setWidth(Spinner.this.getWidth());
+ final int spinnerWidth = Spinner.this.getWidth();
+ final int spinnerPaddingRight = Spinner.this.getPaddingRight();
+ setContentWidth(spinnerWidth - spinnerPaddingLeft - spinnerPaddingRight);
} else {
- setWidth(mDropDownWidth);
+ setContentWidth(mDropDownWidth);
}
+ final Drawable background = getBackground();
+ int bgOffset = 0;
+ if (background != null) {
+ background.getPadding(mTempRect);
+ bgOffset = -mTempRect.left;
+ }
+ setHorizontalOffset(bgOffset + spinnerPaddingLeft);
setInputMethodMode(ListPopupWindow.INPUT_METHOD_NOT_NEEDED);
super.show();
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
diff --git a/core/res/res/values/styles.xml b/core/res/res/values/styles.xml
index d20d16c764bf..0f7bb171c435 100644
--- a/core/res/res/values/styles.xml
+++ b/core/res/res/values/styles.xml
@@ -1772,6 +1772,8 @@ please see styles_device_defaults.xml.
<style name="Widget.Holo.DropDownItem" parent="Widget.DropDownItem">
<item name="android:textAppearance">@style/TextAppearance.Holo.Widget.DropDownItem</item>
+ <item name="android:paddingLeft">8dp</item>
+ <item name="android:paddingRight">8dp</item>
</style>
<style name="Widget.Holo.DropDownItem.Spinner">
@@ -1779,6 +1781,8 @@ please see styles_device_defaults.xml.
<style name="Widget.Holo.TextView.SpinnerItem" parent="Widget.TextView.SpinnerItem">
<item name="android:textAppearance">@style/TextAppearance.Holo.Widget.TextView.SpinnerItem</item>
+ <item name="android:paddingLeft">8dp</item>
+ <item name="android:paddingRight">8dp</item>
</style>
<style name="Widget.Holo.KeyboardView" parent="Widget.KeyboardView">