Loading api/current.xml +35 −11 Original line number Diff line number Diff line Loading @@ -3485,17 +3485,6 @@ visibility="public" > </field> <field name="donut_resource_pad29" type="int" transient="false" volatile="false" value="16843395" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="donut_resource_pad3" type="int" transient="false" Loading Loading @@ -3672,6 +3661,17 @@ visibility="public" > </field> <field name="dropDownHeight" type="int" transient="false" volatile="false" value="16843395" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="dropDownHintAppearance" type="int" transient="false" Loading Loading @@ -162150,6 +162150,17 @@ visibility="public" > </method> <method name="getDropDownHeight" return="int" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="getDropDownWidth" return="int" abstract="false" Loading Loading @@ -162373,6 +162384,19 @@ <parameter name="id" type="int"> </parameter> </method> <method name="setDropDownHeight" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="height" type="int"> </parameter> </method> <method name="setDropDownWidth" return="void" abstract="false" core/java/android/widget/AutoCompleteTextView.java +80 −10 Original line number Diff line number Diff line Loading @@ -80,6 +80,7 @@ import com.android.internal.R; * @attr ref android.R.styleable#AutoCompleteTextView_dropDownSelector * @attr ref android.R.styleable#AutoCompleteTextView_dropDownAnchor * @attr ref android.R.styleable#AutoCompleteTextView_dropDownWidth * @attr ref android.R.styleable#AutoCompleteTextView_dropDownHeight */ public class AutoCompleteTextView extends EditText implements Filter.FilterListener { static final boolean DEBUG = false; Loading @@ -101,6 +102,7 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe private int mDropDownAnchorId; private View mDropDownAnchorView; // view is retrieved lazily from id once needed private int mDropDownWidth; private int mDropDownHeight; private Drawable mDropDownListHighlight; Loading Loading @@ -166,6 +168,8 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe // (for full screen width) or WRAP_CONTENT (to match the width of the anchored view). mDropDownWidth = a.getLayoutDimension(R.styleable.AutoCompleteTextView_dropDownWidth, ViewGroup.LayoutParams.WRAP_CONTENT); mDropDownHeight = a.getLayoutDimension(R.styleable.AutoCompleteTextView_dropDownHeight, ViewGroup.LayoutParams.WRAP_CONTENT); mHintResource = a.getResourceId(R.styleable.AutoCompleteTextView_completionHintView, R.layout.simple_dropdown_hint); Loading Loading @@ -255,6 +259,34 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe mDropDownWidth = width; } /** * <p>Returns the current height for the auto-complete drop down list. This can * be a fixed height, or {@link ViewGroup.LayoutParams#FILL_PARENT} to fill * the screen, or {@link ViewGroup.LayoutParams#WRAP_CONTENT} to fit the height * of the drop down's content.</p> * * @return the height for the drop down list * * @attr ref android.R.styleable#AutoCompleteTextView_dropDownHeight */ public int getDropDownHeight() { return mDropDownHeight; } /** * <p>Sets the current height for the auto-complete drop down list. This can * be a fixed height, or {@link ViewGroup.LayoutParams#FILL_PARENT} to fill * the screen, or {@link ViewGroup.LayoutParams#WRAP_CONTENT} to fit the height * of the drop down's content.</p> * * @param height the height to use * * @attr ref android.R.styleable#AutoCompleteTextView_dropDownHeight */ public void setDropDownHeight(int height) { mDropDownHeight = height; } /** * <p>Returns the id for the view that the auto-complete drop down list is anchored to.</p> * Loading Loading @@ -635,7 +667,7 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe // event to prevent focus from moving. clearListSelection(); mPopup.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED); mPopup.update(); showDropDown(); return true; } else { // WARNING: Please read the comment where mListSelectionHidden Loading @@ -655,7 +687,7 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe // by ensuring it has focus and getting its window out // of touch mode. mDropDownList.requestFocusFromTouch(); mPopup.update(); showDropDown(); switch (keyCode) { // avoid passing the focus from the text view to the Loading Loading @@ -1052,8 +1084,13 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe */ public void showDropDown() { int height = buildDropDown(); int widthSpec = 0; int heightSpec = 0; boolean noInputMethod = mPopup.getInputMethodMode() == PopupWindow.INPUT_METHOD_NOT_NEEDED; if (mPopup.isShowing()) { int widthSpec; if (mDropDownWidth == ViewGroup.LayoutParams.FILL_PARENT) { // The call to PopupWindow's update method below can accept -1 for any // value you do not want to update. Loading @@ -1063,20 +1100,51 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe } else { widthSpec = mDropDownWidth; } if (mDropDownHeight == ViewGroup.LayoutParams.FILL_PARENT) { // The call to PopupWindow's update method below can accept -1 for any // value you do not want to update. heightSpec = noInputMethod ? height : ViewGroup.LayoutParams.FILL_PARENT; if (noInputMethod) { mPopup.setWindowLayoutMode( mDropDownWidth == ViewGroup.LayoutParams.FILL_PARENT ? ViewGroup.LayoutParams.FILL_PARENT : 0, 0); } else { mPopup.setWindowLayoutMode( mDropDownWidth == ViewGroup.LayoutParams.FILL_PARENT ? ViewGroup.LayoutParams.FILL_PARENT : 0, ViewGroup.LayoutParams.FILL_PARENT); } } else if (mDropDownHeight == ViewGroup.LayoutParams.WRAP_CONTENT) { heightSpec = height; } else { heightSpec = mDropDownHeight; } mPopup.update(getDropDownAnchorView(), mDropDownHorizontalOffset, mDropDownVerticalOffset, widthSpec, height); mDropDownVerticalOffset, widthSpec, heightSpec); } else { if (mDropDownWidth == ViewGroup.LayoutParams.FILL_PARENT) { mPopup.setWindowLayoutMode(ViewGroup.LayoutParams.FILL_PARENT, 0); widthSpec = ViewGroup.LayoutParams.FILL_PARENT; } else { mPopup.setWindowLayoutMode(0, 0); if (mDropDownWidth == ViewGroup.LayoutParams.WRAP_CONTENT) { mPopup.setWidth(getDropDownAnchorView().getWidth()); } else { mPopup.setWidth(mDropDownWidth); } } if (mDropDownHeight == ViewGroup.LayoutParams.FILL_PARENT) { heightSpec = ViewGroup.LayoutParams.FILL_PARENT; } else { if (mDropDownHeight == ViewGroup.LayoutParams.WRAP_CONTENT) { mPopup.setHeight(height); } else { mPopup.setHeight(mDropDownHeight); } } mPopup.setWindowLayoutMode(widthSpec, heightSpec); mPopup.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED); // use outside touchable to dismiss drop down when touching outside of it, so Loading Loading @@ -1195,10 +1263,12 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe final int maxHeight = mPopup.getMaxAvailableHeight( getDropDownAnchorView(), mDropDownVerticalOffset, ignoreBottomDecorations); final int measuredHeight = mDropDownList.measureHeightOfChildren(MeasureSpec.UNSPECIFIED, 0, ListView.NO_POSITION, maxHeight - otherHeights, 2) + otherHeights; if (mDropDownAlwaysVisible) { return maxHeight; } return mDropDownAlwaysVisible ? maxHeight : measuredHeight; return mDropDownList.measureHeightOfChildren(MeasureSpec.UNSPECIFIED, 0, ListView.NO_POSITION, maxHeight - otherHeights, 2) + otherHeights; } private View getHintView(Context context) { Loading core/java/android/widget/PopupWindow.java +5 −8 Original line number Diff line number Diff line Loading @@ -49,7 +49,7 @@ import java.lang.ref.WeakReference; */ public class PopupWindow { /** * Mode for {@link #setInputMethodMode(int): the requirements for the * Mode for {@link #setInputMethodMode(int)}: the requirements for the * input method should be based on the focusability of the popup. That is * if it is focusable than it needs to work with the input method, else * it doesn't. Loading @@ -57,16 +57,15 @@ public class PopupWindow { public static final int INPUT_METHOD_FROM_FOCUSABLE = 0; /** * Mode for {@link #setInputMethodMode(int): this popup always needs to * Mode for {@link #setInputMethodMode(int)}: this popup always needs to * work with an input method, regardless of whether it is focusable. This * means that it will always be displayed so that the user can also operate * the input method while it is shown. */ public static final int INPUT_METHOD_NEEDED = 1; /** * Mode for {@link #setInputMethodMode(int): this popup never needs to * Mode for {@link #setInputMethodMode(int)}: this popup never needs to * work with an input method, regardless of whether it is focusable. This * means that it will always be displayed to use as much space on the * screen as needed, regardless of whether this covers the input method. Loading Loading @@ -1131,8 +1130,7 @@ public class PopupWindow { return; } WindowManager.LayoutParams p = (WindowManager.LayoutParams) mPopupView.getLayoutParams(); WindowManager.LayoutParams p = (WindowManager.LayoutParams) mPopupView.getLayoutParams(); boolean update = force; Loading Loading @@ -1219,8 +1217,7 @@ public class PopupWindow { registerForScrollChanged(anchor, xoff, yoff); } WindowManager.LayoutParams p = (WindowManager.LayoutParams) mPopupView.getLayoutParams(); WindowManager.LayoutParams p = (WindowManager.LayoutParams) mPopupView.getLayoutParams(); if (updateDimension) { if (width == -1) { Loading core/res/res/layout/search_bar.xml +1 −0 Original line number Diff line number Diff line Loading @@ -76,6 +76,7 @@ android:ellipsize="end" android:inputType="text|textAutoComplete" android:dropDownWidth="fill_parent" android:dropDownHeight="fill_parent" android:dropDownAnchor="@id/search_plate" android:dropDownVerticalOffset="-9dip" android:popupBackground="@android:drawable/search_dropdown_background" Loading core/res/res/values/attrs.xml +10 −0 Original line number Diff line number Diff line Loading @@ -1998,6 +1998,16 @@ <!-- The dropdown should fit the width of its anchor. --> <enum name="wrap_content" value="-2" /> </attr> <!-- Specifies the basic width of the dropdown. Its value may be a dimension (such as "12dip") for a constant width, fill_parent to fill the width of the screen, or wrap_content to match the height of the content of the drop down. --> <attr name="dropDownHeight" format="dimension"> <!-- The dropdown should fill the width of the screen. --> <enum name="fill_parent" value="-1" /> <!-- The dropdown should fit the width of its anchor. --> <enum name="wrap_content" value="-2" /> </attr> <attr name="inputType" /> </declare-styleable> <declare-styleable name="PopupWindow"> Loading Loading
api/current.xml +35 −11 Original line number Diff line number Diff line Loading @@ -3485,17 +3485,6 @@ visibility="public" > </field> <field name="donut_resource_pad29" type="int" transient="false" volatile="false" value="16843395" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="donut_resource_pad3" type="int" transient="false" Loading Loading @@ -3672,6 +3661,17 @@ visibility="public" > </field> <field name="dropDownHeight" type="int" transient="false" volatile="false" value="16843395" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="dropDownHintAppearance" type="int" transient="false" Loading Loading @@ -162150,6 +162150,17 @@ visibility="public" > </method> <method name="getDropDownHeight" return="int" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="getDropDownWidth" return="int" abstract="false" Loading Loading @@ -162373,6 +162384,19 @@ <parameter name="id" type="int"> </parameter> </method> <method name="setDropDownHeight" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="height" type="int"> </parameter> </method> <method name="setDropDownWidth" return="void" abstract="false"
core/java/android/widget/AutoCompleteTextView.java +80 −10 Original line number Diff line number Diff line Loading @@ -80,6 +80,7 @@ import com.android.internal.R; * @attr ref android.R.styleable#AutoCompleteTextView_dropDownSelector * @attr ref android.R.styleable#AutoCompleteTextView_dropDownAnchor * @attr ref android.R.styleable#AutoCompleteTextView_dropDownWidth * @attr ref android.R.styleable#AutoCompleteTextView_dropDownHeight */ public class AutoCompleteTextView extends EditText implements Filter.FilterListener { static final boolean DEBUG = false; Loading @@ -101,6 +102,7 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe private int mDropDownAnchorId; private View mDropDownAnchorView; // view is retrieved lazily from id once needed private int mDropDownWidth; private int mDropDownHeight; private Drawable mDropDownListHighlight; Loading Loading @@ -166,6 +168,8 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe // (for full screen width) or WRAP_CONTENT (to match the width of the anchored view). mDropDownWidth = a.getLayoutDimension(R.styleable.AutoCompleteTextView_dropDownWidth, ViewGroup.LayoutParams.WRAP_CONTENT); mDropDownHeight = a.getLayoutDimension(R.styleable.AutoCompleteTextView_dropDownHeight, ViewGroup.LayoutParams.WRAP_CONTENT); mHintResource = a.getResourceId(R.styleable.AutoCompleteTextView_completionHintView, R.layout.simple_dropdown_hint); Loading Loading @@ -255,6 +259,34 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe mDropDownWidth = width; } /** * <p>Returns the current height for the auto-complete drop down list. This can * be a fixed height, or {@link ViewGroup.LayoutParams#FILL_PARENT} to fill * the screen, or {@link ViewGroup.LayoutParams#WRAP_CONTENT} to fit the height * of the drop down's content.</p> * * @return the height for the drop down list * * @attr ref android.R.styleable#AutoCompleteTextView_dropDownHeight */ public int getDropDownHeight() { return mDropDownHeight; } /** * <p>Sets the current height for the auto-complete drop down list. This can * be a fixed height, or {@link ViewGroup.LayoutParams#FILL_PARENT} to fill * the screen, or {@link ViewGroup.LayoutParams#WRAP_CONTENT} to fit the height * of the drop down's content.</p> * * @param height the height to use * * @attr ref android.R.styleable#AutoCompleteTextView_dropDownHeight */ public void setDropDownHeight(int height) { mDropDownHeight = height; } /** * <p>Returns the id for the view that the auto-complete drop down list is anchored to.</p> * Loading Loading @@ -635,7 +667,7 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe // event to prevent focus from moving. clearListSelection(); mPopup.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED); mPopup.update(); showDropDown(); return true; } else { // WARNING: Please read the comment where mListSelectionHidden Loading @@ -655,7 +687,7 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe // by ensuring it has focus and getting its window out // of touch mode. mDropDownList.requestFocusFromTouch(); mPopup.update(); showDropDown(); switch (keyCode) { // avoid passing the focus from the text view to the Loading Loading @@ -1052,8 +1084,13 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe */ public void showDropDown() { int height = buildDropDown(); int widthSpec = 0; int heightSpec = 0; boolean noInputMethod = mPopup.getInputMethodMode() == PopupWindow.INPUT_METHOD_NOT_NEEDED; if (mPopup.isShowing()) { int widthSpec; if (mDropDownWidth == ViewGroup.LayoutParams.FILL_PARENT) { // The call to PopupWindow's update method below can accept -1 for any // value you do not want to update. Loading @@ -1063,20 +1100,51 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe } else { widthSpec = mDropDownWidth; } if (mDropDownHeight == ViewGroup.LayoutParams.FILL_PARENT) { // The call to PopupWindow's update method below can accept -1 for any // value you do not want to update. heightSpec = noInputMethod ? height : ViewGroup.LayoutParams.FILL_PARENT; if (noInputMethod) { mPopup.setWindowLayoutMode( mDropDownWidth == ViewGroup.LayoutParams.FILL_PARENT ? ViewGroup.LayoutParams.FILL_PARENT : 0, 0); } else { mPopup.setWindowLayoutMode( mDropDownWidth == ViewGroup.LayoutParams.FILL_PARENT ? ViewGroup.LayoutParams.FILL_PARENT : 0, ViewGroup.LayoutParams.FILL_PARENT); } } else if (mDropDownHeight == ViewGroup.LayoutParams.WRAP_CONTENT) { heightSpec = height; } else { heightSpec = mDropDownHeight; } mPopup.update(getDropDownAnchorView(), mDropDownHorizontalOffset, mDropDownVerticalOffset, widthSpec, height); mDropDownVerticalOffset, widthSpec, heightSpec); } else { if (mDropDownWidth == ViewGroup.LayoutParams.FILL_PARENT) { mPopup.setWindowLayoutMode(ViewGroup.LayoutParams.FILL_PARENT, 0); widthSpec = ViewGroup.LayoutParams.FILL_PARENT; } else { mPopup.setWindowLayoutMode(0, 0); if (mDropDownWidth == ViewGroup.LayoutParams.WRAP_CONTENT) { mPopup.setWidth(getDropDownAnchorView().getWidth()); } else { mPopup.setWidth(mDropDownWidth); } } if (mDropDownHeight == ViewGroup.LayoutParams.FILL_PARENT) { heightSpec = ViewGroup.LayoutParams.FILL_PARENT; } else { if (mDropDownHeight == ViewGroup.LayoutParams.WRAP_CONTENT) { mPopup.setHeight(height); } else { mPopup.setHeight(mDropDownHeight); } } mPopup.setWindowLayoutMode(widthSpec, heightSpec); mPopup.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED); // use outside touchable to dismiss drop down when touching outside of it, so Loading Loading @@ -1195,10 +1263,12 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe final int maxHeight = mPopup.getMaxAvailableHeight( getDropDownAnchorView(), mDropDownVerticalOffset, ignoreBottomDecorations); final int measuredHeight = mDropDownList.measureHeightOfChildren(MeasureSpec.UNSPECIFIED, 0, ListView.NO_POSITION, maxHeight - otherHeights, 2) + otherHeights; if (mDropDownAlwaysVisible) { return maxHeight; } return mDropDownAlwaysVisible ? maxHeight : measuredHeight; return mDropDownList.measureHeightOfChildren(MeasureSpec.UNSPECIFIED, 0, ListView.NO_POSITION, maxHeight - otherHeights, 2) + otherHeights; } private View getHintView(Context context) { Loading
core/java/android/widget/PopupWindow.java +5 −8 Original line number Diff line number Diff line Loading @@ -49,7 +49,7 @@ import java.lang.ref.WeakReference; */ public class PopupWindow { /** * Mode for {@link #setInputMethodMode(int): the requirements for the * Mode for {@link #setInputMethodMode(int)}: the requirements for the * input method should be based on the focusability of the popup. That is * if it is focusable than it needs to work with the input method, else * it doesn't. Loading @@ -57,16 +57,15 @@ public class PopupWindow { public static final int INPUT_METHOD_FROM_FOCUSABLE = 0; /** * Mode for {@link #setInputMethodMode(int): this popup always needs to * Mode for {@link #setInputMethodMode(int)}: this popup always needs to * work with an input method, regardless of whether it is focusable. This * means that it will always be displayed so that the user can also operate * the input method while it is shown. */ public static final int INPUT_METHOD_NEEDED = 1; /** * Mode for {@link #setInputMethodMode(int): this popup never needs to * Mode for {@link #setInputMethodMode(int)}: this popup never needs to * work with an input method, regardless of whether it is focusable. This * means that it will always be displayed to use as much space on the * screen as needed, regardless of whether this covers the input method. Loading Loading @@ -1131,8 +1130,7 @@ public class PopupWindow { return; } WindowManager.LayoutParams p = (WindowManager.LayoutParams) mPopupView.getLayoutParams(); WindowManager.LayoutParams p = (WindowManager.LayoutParams) mPopupView.getLayoutParams(); boolean update = force; Loading Loading @@ -1219,8 +1217,7 @@ public class PopupWindow { registerForScrollChanged(anchor, xoff, yoff); } WindowManager.LayoutParams p = (WindowManager.LayoutParams) mPopupView.getLayoutParams(); WindowManager.LayoutParams p = (WindowManager.LayoutParams) mPopupView.getLayoutParams(); if (updateDimension) { if (width == -1) { Loading
core/res/res/layout/search_bar.xml +1 −0 Original line number Diff line number Diff line Loading @@ -76,6 +76,7 @@ android:ellipsize="end" android:inputType="text|textAutoComplete" android:dropDownWidth="fill_parent" android:dropDownHeight="fill_parent" android:dropDownAnchor="@id/search_plate" android:dropDownVerticalOffset="-9dip" android:popupBackground="@android:drawable/search_dropdown_background" Loading
core/res/res/values/attrs.xml +10 −0 Original line number Diff line number Diff line Loading @@ -1998,6 +1998,16 @@ <!-- The dropdown should fit the width of its anchor. --> <enum name="wrap_content" value="-2" /> </attr> <!-- Specifies the basic width of the dropdown. Its value may be a dimension (such as "12dip") for a constant width, fill_parent to fill the width of the screen, or wrap_content to match the height of the content of the drop down. --> <attr name="dropDownHeight" format="dimension"> <!-- The dropdown should fill the width of the screen. --> <enum name="fill_parent" value="-1" /> <!-- The dropdown should fit the width of its anchor. --> <enum name="wrap_content" value="-2" /> </attr> <attr name="inputType" /> </declare-styleable> <declare-styleable name="PopupWindow"> Loading