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

* commit '619e4dca8e9dfe4daa0754b0568a7590788cd50e':
  Improve ListPopupWindow RTL support
This commit is contained in:
Fabrice Di Meglio
2012-07-30 13:10:21 -07:00
committed by Android Git Automerger

View File

@@ -22,6 +22,7 @@ import android.graphics.Rect;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.os.Handler; import android.os.Handler;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.util.LocaleUtil;
import android.util.Log; import android.util.Log;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.MotionEvent; import android.view.MotionEvent;
@@ -31,6 +32,8 @@ import android.view.View.OnTouchListener;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.ViewParent; import android.view.ViewParent;
import java.util.Locale;
/** /**
* A ListPopupWindow anchors itself to a host view and displays a * A ListPopupWindow anchors itself to a host view and displays a
* list of choices. * list of choices.
@@ -92,6 +95,8 @@ public class ListPopupWindow {
private boolean mModal; private boolean mModal;
private int mLayoutDirection;
/** /**
* The provided prompt view should appear above list content. * The provided prompt view should appear above list content.
* *
@@ -193,6 +198,9 @@ public class ListPopupWindow {
mContext = context; mContext = context;
mPopup = new PopupWindow(context, attrs, defStyleAttr, defStyleRes); mPopup = new PopupWindow(context, attrs, defStyleAttr, defStyleRes);
mPopup.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED); 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.setOnItemSelectedListener(mItemSelectedListener);
} }
mDropDownList.setLayoutDirection(mLayoutDirection);
dropDownView = mDropDownList; dropDownView = mDropDownList;
View hintView = mPromptView; View hintView = mPromptView;
@@ -1121,9 +1131,18 @@ public class ListPopupWindow {
return listContent + otherHeights; 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) { if (mDropDownList != null) {
mDropDownList.setLayoutDirection(resolvedLayoutDirection); mDropDownList.setLayoutDirection(mLayoutDirection);
} }
} }