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