summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/widget/ListPopupWindow.java23
1 files changed, 21 insertions, 2 deletions
diff --git a/core/java/android/widget/ListPopupWindow.java b/core/java/android/widget/ListPopupWindow.java
index 100b8724aade..3baf5a9a3555 100644
--- a/core/java/android/widget/ListPopupWindow.java
+++ b/core/java/android/widget/ListPopupWindow.java
@@ -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);
}
}