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

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

Merge "Improve ListPopupWindow RTL support" into jb-mr1-dev

parents fa14d824 1d3d7da3
Loading
Loading
Loading
Loading
+21 −2
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.util.AttributeSet;
import android.util.LocaleUtil;
import android.util.Log;
import android.view.KeyEvent;
import android.view.MotionEvent;
@@ -31,6 +32,8 @@ import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.view.ViewParent;

import java.util.Locale;

/**
 * A ListPopupWindow anchors itself to a host view and displays a
 * list of choices.
@@ -92,6 +95,8 @@ public class ListPopupWindow {

    private boolean mModal;

    private int mLayoutDirection;

    /**
     * The provided prompt view should appear above list content.
     * 
@@ -193,6 +198,9 @@ public class ListPopupWindow {
        mContext = context;
        mPopup = new PopupWindow(context, attrs, defStyleAttr, defStyleRes);
        mPopup.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED);
        // Set the default layout direction to match the default locale one
        final Locale locale = mContext.getResources().getConfiguration().locale;
        mLayoutDirection = LocaleUtil.getLayoutDirectionFromLocale(locale);
    }

    /**
@@ -1013,6 +1021,8 @@ public class ListPopupWindow {
                mDropDownList.setOnItemSelectedListener(mItemSelectedListener);
            }

            mDropDownList.setLayoutDirection(mLayoutDirection);

            dropDownView = mDropDownList;

            View hintView = mPromptView;
@@ -1121,9 +1131,18 @@ public class ListPopupWindow {
        return listContent + otherHeights;
    }

    public void setLayoutDirection(int resolvedLayoutDirection) {
    /**
     * Set the layout direction for this popup. Should be a resolved direction as the
     * popup as no capacity to do the resolution on his own.
     *
     * @param layoutDirection One of {@link View#LAYOUT_DIRECTION_LTR},
     *   {@link View#LAYOUT_DIRECTION_RTL},
     *
     */
    public void setLayoutDirection(int layoutDirection) {
        mLayoutDirection = layoutDirection;
        if (mDropDownList != null) {
            mDropDownList.setLayoutDirection(resolvedLayoutDirection);
            mDropDownList.setLayoutDirection(mLayoutDirection);
        }
    }