ListPopupWindow should use window layout type SUB_PANEL

Look down, back up, where are you? You're in a dialog with an
AutoCompleteTextView. What's on your screen? I have it, it's the
auto-completion results you could be seeing. Look again. The window
layout type is now TYPE_APPLICATION_SUB_PANEL and the auto-completion
results are visible.

Also adds API on ListPopupWindow to specify the window layout type
and changes the text editing handle to be type ABOVE_SUB_PANEL.

Bug: 18530738
Change-Id: Id5577c4892729920de5b73411e580e6b2b2401d0
This commit is contained in:
Alan Viverette
2015-04-30 15:53:11 -07:00
parent 7dc7d09ba5
commit 80ebe0d4ec
5 changed files with 24 additions and 5 deletions

View File

@@ -40635,6 +40635,7 @@ package android.widget {
method public void setSoftInputMode(int);
method public void setVerticalOffset(int);
method public void setWidth(int);
method public void setWindowLayoutType(int);
method public void show();
field public static final int INPUT_METHOD_FROM_FOCUSABLE = 0; // 0x0
field public static final int INPUT_METHOD_NEEDED = 1; // 0x1

View File

@@ -43156,6 +43156,7 @@ package android.widget {
method public void setSoftInputMode(int);
method public void setVerticalOffset(int);
method public void setWidth(int);
method public void setWindowLayoutType(int);
method public void show();
field public static final int INPUT_METHOD_FROM_FOCUSABLE = 0; // 0x0
field public static final int INPUT_METHOD_NEEDED = 1; // 0x1

View File

@@ -2422,7 +2422,8 @@ public class Editor {
public PinnedPopupWindow() {
createPopupWindow();
mPopupWindow.setWindowLayoutType(WindowManager.LayoutParams.TYPE_APPLICATION_SUB_PANEL);
mPopupWindow.setWindowLayoutType(
WindowManager.LayoutParams.TYPE_APPLICATION_ABOVE_SUB_PANEL);
mPopupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
mPopupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);

View File

@@ -39,6 +39,7 @@ import android.view.View.OnTouchListener;
import android.view.ViewConfiguration;
import android.view.ViewGroup;
import android.view.ViewParent;
import android.view.WindowManager;
import android.view.animation.AccelerateDecelerateInterpolator;
import com.android.internal.R;
@@ -77,6 +78,7 @@ public class ListPopupWindow {
private int mDropDownWidth = ViewGroup.LayoutParams.WRAP_CONTENT;
private int mDropDownHorizontalOffset;
private int mDropDownVerticalOffset;
private int mDropDownWindowLayoutType = WindowManager.LayoutParams.TYPE_APPLICATION_SUB_PANEL;
private boolean mDropDownVerticalOffsetSet;
private int mDropDownGravity = Gravity.NO_GRAVITY;
@@ -514,6 +516,19 @@ public class ListPopupWindow {
mDropDownHeight = height;
}
/**
* Set the layout type for this popup window.
* <p>
* See {@link WindowManager.LayoutParams#type} for possible values.
*
* @param layoutType Layout type for this window.
*
* @see WindowManager.LayoutParams#type
*/
public void setWindowLayoutType(int layoutType) {
mDropDownWindowLayoutType = layoutType;
}
/**
* Sets a listener to receive events when a list item is clicked.
*
@@ -567,8 +582,9 @@ public class ListPopupWindow {
public void show() {
int height = buildDropDown();
boolean noInputMethod = isInputMethodNotNeeded();
final boolean noInputMethod = isInputMethodNotNeeded();
mPopup.setAllowScrollingAnchorParent(!noInputMethod);
mPopup.setWindowLayoutType(mDropDownWindowLayoutType);
if (mPopup.isShowing()) {
final int widthSpec;

View File

@@ -829,9 +829,9 @@ public class PopupWindow {
}
/**
* Set the layout type for this window. This value will be passed through to
* {@link WindowManager.LayoutParams#type} therefore the value should match any value
* {@link WindowManager.LayoutParams#type} accepts.
* Set the layout type for this window.
* <p>
* See {@link WindowManager.LayoutParams#type} for possible values.
*
* @param layoutType Layout type for this window.
*