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

Commit cb57869c authored by Fabrice Di Meglio's avatar Fabrice Di Meglio Committed by Android Git Automerger
Browse files

am e2a7c66d: am 619e4dca: Merge "Improve ListPopupWindow RTL support" into jb-mr1-dev

* commit 'e2a7c66d':
  Improve ListPopupWindow RTL support
parents 77670822 e2a7c66d
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);
        }
    }