Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e4beeb8e authored by Fabrice Di Meglio's avatar Fabrice Di Meglio Committed by Android (Google) Code Review
Browse files

Merge "Make Spinner widget aware of layout direction"

parents 5f85a76e 38d64c5a
Loading
Loading
Loading
Loading
+16 −12
Original line number Diff line number Diff line
@@ -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();
@@ -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
@@ -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;
@@ -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()
@@ -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);
+1 −1
Original line number Diff line number Diff line
@@ -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>