summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFabrice Di Meglio <fdimeglio@google.com>2012-07-30 11:29:19 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-07-30 11:29:20 -0700
commit619e4dca8e9dfe4daa0754b0568a7590788cd50e (patch)
tree2fb450119d5b744bef5de450e9e1e9d79eb5e37a
parentfa14d824d235c33b137a429c3eb6818f273407ab (diff)
parent1d3d7da331a3e9dc783819ab6fe29ea21c873f1e (diff)
downloadframeworks_base-619e4dca8e9dfe4daa0754b0568a7590788cd50e.zip
frameworks_base-619e4dca8e9dfe4daa0754b0568a7590788cd50e.tar.gz
frameworks_base-619e4dca8e9dfe4daa0754b0568a7590788cd50e.tar.bz2
Merge "Improve ListPopupWindow RTL support" into jb-mr1-dev
-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 100b872..3baf5a9 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);
}
}