am 619e4dca: Merge "Improve ListPopupWindow RTL support" into jb-mr1-dev
* commit '619e4dca8e9dfe4daa0754b0568a7590788cd50e': Improve ListPopupWindow RTL support
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user