diff options
author | Fabrice Di Meglio <fdimeglio@google.com> | 2012-07-30 11:29:19 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-07-30 11:29:20 -0700 |
commit | 619e4dca8e9dfe4daa0754b0568a7590788cd50e (patch) | |
tree | 2fb450119d5b744bef5de450e9e1e9d79eb5e37a | |
parent | fa14d824d235c33b137a429c3eb6818f273407ab (diff) | |
parent | 1d3d7da331a3e9dc783819ab6fe29ea21c873f1e (diff) | |
download | frameworks_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.java | 23 |
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); } } |