diff --git a/core/java/android/widget/AutoCompleteTextView.java b/core/java/android/widget/AutoCompleteTextView.java index 30dd17d6f740d..3b1532dd8929d 100644 --- a/core/java/android/widget/AutoCompleteTextView.java +++ b/core/java/android/widget/AutoCompleteTextView.java @@ -1078,6 +1078,7 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe mPopup.setInputMethodMode(ListPopupWindow.INPUT_METHOD_NEEDED); mPopup.setListItemExpandMax(EXPAND_MAX); } + mPopup.setLayoutDirection(getResolvedLayoutDirection()); mPopup.show(); mPopup.getListView().setOverScrollMode(View.OVER_SCROLL_ALWAYS); } diff --git a/core/java/android/widget/ListPopupWindow.java b/core/java/android/widget/ListPopupWindow.java index 1d966b36c2530..100b8724aade0 100644 --- a/core/java/android/widget/ListPopupWindow.java +++ b/core/java/android/widget/ListPopupWindow.java @@ -1121,6 +1121,12 @@ public class ListPopupWindow { return listContent + otherHeights; } + public void setLayoutDirection(int resolvedLayoutDirection) { + if (mDropDownList != null) { + mDropDownList.setLayoutDirection(resolvedLayoutDirection); + } + } + /** *

Wrapper class for a ListView. This wrapper can hijack the focus to * make sure the list uses the appropriate drawables and states when diff --git a/core/java/android/widget/SearchView.java b/core/java/android/widget/SearchView.java index c44ce8a8cff0f..a30567fa1d57c 100644 --- a/core/java/android/widget/SearchView.java +++ b/core/java/android/widget/SearchView.java @@ -326,7 +326,6 @@ public class SearchView extends LinearLayout implements CollapsibleActionView { int oldLeft, int oldTop, int oldRight, int oldBottom) { adjustDropDownSizeAndPosition(); } - }); } @@ -1285,15 +1284,22 @@ public class SearchView extends LinearLayout implements CollapsibleActionView { Resources res = getContext().getResources(); int anchorPadding = mSearchPlate.getPaddingLeft(); Rect dropDownPadding = new Rect(); + final boolean isLayoutRtl = isLayoutRtl(); int iconOffset = mIconifiedByDefault ? res.getDimensionPixelSize(R.dimen.dropdownitem_icon_width) + res.getDimensionPixelSize(R.dimen.dropdownitem_text_padding_left) : 0; mQueryTextView.getDropDownBackground().getPadding(dropDownPadding); - mQueryTextView.setDropDownHorizontalOffset(-(dropDownPadding.left + iconOffset) - + anchorPadding); - mQueryTextView.setDropDownWidth(mDropDownAnchor.getWidth() + dropDownPadding.left - + dropDownPadding.right + iconOffset - (anchorPadding)); + int offset; + if (isLayoutRtl) { + offset = - dropDownPadding.left; + } else { + offset = anchorPadding - (dropDownPadding.left + iconOffset); + } + mQueryTextView.setDropDownHorizontalOffset(offset); + final int width = mDropDownAnchor.getWidth() + dropDownPadding.left + + dropDownPadding.right + iconOffset - anchorPadding; + mQueryTextView.setDropDownWidth(width); } } @@ -1347,6 +1353,11 @@ public class SearchView extends LinearLayout implements CollapsibleActionView { } }; + @Override + public void onResolvedLayoutDirectionChanged() { + mQueryTextView.setLayoutDirection(getResolvedLayoutDirection()); + } + /** * Query rewriting. */