Loading core/java/android/widget/Spinner.java +16 −12 Original line number Diff line number Diff line Loading @@ -349,7 +349,7 @@ public class Spinner extends AbsSpinner implements OnClickListener { public void setGravity(int gravity) { if (mGravity != gravity) { if ((gravity & Gravity.HORIZONTAL_GRAVITY_MASK) == 0) { gravity |= Gravity.LEFT; gravity |= Gravity.START; } mGravity = gravity; requestLayout(); Loading Loading @@ -453,7 +453,7 @@ public class Spinner extends AbsSpinner implements OnClickListener { /** * Creates and positions all views for this Spinner. * * @param delta Change in the selected position. +1 moves selection is moving to the right, * @param delta Change in the selected position. +1 means selection is moving to the right, * so views are scrolling to the left. -1 means selection is moving to the left. */ @Override Loading Loading @@ -485,7 +485,9 @@ public class Spinner extends AbsSpinner implements OnClickListener { View sel = makeAndAddView(mSelectedPosition); int width = sel.getMeasuredWidth(); int selectedOffset = childrenLeft; switch (mGravity & Gravity.HORIZONTAL_GRAVITY_MASK) { final int layoutDirection = getResolvedLayoutDirection(); final int absoluteGravity = Gravity.getAbsoluteGravity(mGravity, layoutDirection); switch (absoluteGravity & Gravity.HORIZONTAL_GRAVITY_MASK) { case Gravity.CENTER_HORIZONTAL: selectedOffset = childrenLeft + (childrenWidth / 2) - (width / 2); break; Loading Loading @@ -932,19 +934,18 @@ public class Spinner extends AbsSpinner implements OnClickListener { @Override public void show() { final Drawable background = getBackground(); int bgOffset = 0; int hOffset = 0; if (background != null) { background.getPadding(mTempRect); bgOffset = -mTempRect.left; hOffset = isLayoutRtl() ? mTempRect.right : -mTempRect.left; } else { mTempRect.left = mTempRect.right = 0; } final int spinnerPaddingLeft = Spinner.this.getPaddingLeft(); if (mDropDownWidth == WRAP_CONTENT) { final int spinnerWidth = Spinner.this.getWidth(); final int spinnerPaddingRight = Spinner.this.getPaddingRight(); final int spinnerWidth = Spinner.this.getWidth(); if (mDropDownWidth == WRAP_CONTENT) { int contentWidth = measureContentWidth( (SpinnerAdapter) mAdapter, getBackground()); final int contentWidthLimit = mContext.getResources() Loading @@ -952,17 +953,20 @@ public class Spinner extends AbsSpinner implements OnClickListener { if (contentWidth > contentWidthLimit) { contentWidth = contentWidthLimit; } setContentWidth(Math.max( contentWidth, spinnerWidth - spinnerPaddingLeft - spinnerPaddingRight)); } else if (mDropDownWidth == MATCH_PARENT) { final int spinnerWidth = Spinner.this.getWidth(); final int spinnerPaddingRight = Spinner.this.getPaddingRight(); setContentWidth(spinnerWidth - spinnerPaddingLeft - spinnerPaddingRight); } else { setContentWidth(mDropDownWidth); } setHorizontalOffset(bgOffset + spinnerPaddingLeft); if (isLayoutRtl()) { hOffset += spinnerWidth - spinnerPaddingRight - getWidth(); } else { hOffset += spinnerPaddingLeft; } setHorizontalOffset(hOffset); setInputMethodMode(ListPopupWindow.INPUT_METHOD_NOT_NEEDED); super.show(); getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE); Loading core/res/res/values/styles.xml +1 −1 Original line number Diff line number Diff line Loading @@ -1769,7 +1769,7 @@ please see styles_device_defaults.xml. <item name="android:dropDownHorizontalOffset">0dip</item> <item name="android:dropDownWidth">wrap_content</item> <item name="android:popupPromptView">@android:layout/simple_dropdown_hint</item> <item name="android:gravity">left|center_vertical</item> <item name="android:gravity">start|center_vertical</item> <item name="android:disableChildrenWhenDisabled">true</item> </style> Loading Loading
core/java/android/widget/Spinner.java +16 −12 Original line number Diff line number Diff line Loading @@ -349,7 +349,7 @@ public class Spinner extends AbsSpinner implements OnClickListener { public void setGravity(int gravity) { if (mGravity != gravity) { if ((gravity & Gravity.HORIZONTAL_GRAVITY_MASK) == 0) { gravity |= Gravity.LEFT; gravity |= Gravity.START; } mGravity = gravity; requestLayout(); Loading Loading @@ -453,7 +453,7 @@ public class Spinner extends AbsSpinner implements OnClickListener { /** * Creates and positions all views for this Spinner. * * @param delta Change in the selected position. +1 moves selection is moving to the right, * @param delta Change in the selected position. +1 means selection is moving to the right, * so views are scrolling to the left. -1 means selection is moving to the left. */ @Override Loading Loading @@ -485,7 +485,9 @@ public class Spinner extends AbsSpinner implements OnClickListener { View sel = makeAndAddView(mSelectedPosition); int width = sel.getMeasuredWidth(); int selectedOffset = childrenLeft; switch (mGravity & Gravity.HORIZONTAL_GRAVITY_MASK) { final int layoutDirection = getResolvedLayoutDirection(); final int absoluteGravity = Gravity.getAbsoluteGravity(mGravity, layoutDirection); switch (absoluteGravity & Gravity.HORIZONTAL_GRAVITY_MASK) { case Gravity.CENTER_HORIZONTAL: selectedOffset = childrenLeft + (childrenWidth / 2) - (width / 2); break; Loading Loading @@ -932,19 +934,18 @@ public class Spinner extends AbsSpinner implements OnClickListener { @Override public void show() { final Drawable background = getBackground(); int bgOffset = 0; int hOffset = 0; if (background != null) { background.getPadding(mTempRect); bgOffset = -mTempRect.left; hOffset = isLayoutRtl() ? mTempRect.right : -mTempRect.left; } else { mTempRect.left = mTempRect.right = 0; } final int spinnerPaddingLeft = Spinner.this.getPaddingLeft(); if (mDropDownWidth == WRAP_CONTENT) { final int spinnerWidth = Spinner.this.getWidth(); final int spinnerPaddingRight = Spinner.this.getPaddingRight(); final int spinnerWidth = Spinner.this.getWidth(); if (mDropDownWidth == WRAP_CONTENT) { int contentWidth = measureContentWidth( (SpinnerAdapter) mAdapter, getBackground()); final int contentWidthLimit = mContext.getResources() Loading @@ -952,17 +953,20 @@ public class Spinner extends AbsSpinner implements OnClickListener { if (contentWidth > contentWidthLimit) { contentWidth = contentWidthLimit; } setContentWidth(Math.max( contentWidth, spinnerWidth - spinnerPaddingLeft - spinnerPaddingRight)); } else if (mDropDownWidth == MATCH_PARENT) { final int spinnerWidth = Spinner.this.getWidth(); final int spinnerPaddingRight = Spinner.this.getPaddingRight(); setContentWidth(spinnerWidth - spinnerPaddingLeft - spinnerPaddingRight); } else { setContentWidth(mDropDownWidth); } setHorizontalOffset(bgOffset + spinnerPaddingLeft); if (isLayoutRtl()) { hOffset += spinnerWidth - spinnerPaddingRight - getWidth(); } else { hOffset += spinnerPaddingLeft; } setHorizontalOffset(hOffset); setInputMethodMode(ListPopupWindow.INPUT_METHOD_NOT_NEEDED); super.show(); getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE); Loading
core/res/res/values/styles.xml +1 −1 Original line number Diff line number Diff line Loading @@ -1769,7 +1769,7 @@ please see styles_device_defaults.xml. <item name="android:dropDownHorizontalOffset">0dip</item> <item name="android:dropDownWidth">wrap_content</item> <item name="android:popupPromptView">@android:layout/simple_dropdown_hint</item> <item name="android:gravity">left|center_vertical</item> <item name="android:gravity">start|center_vertical</item> <item name="android:disableChildrenWhenDisabled">true</item> </style> Loading