Loading core/java/android/widget/PopupWindow.java +8 −2 Original line number Diff line number Diff line Loading @@ -28,7 +28,6 @@ import android.graphics.drawable.StateListDrawable; import android.os.Build; import android.os.IBinder; import android.util.AttributeSet; import android.util.DisplayMetrics; import android.view.Gravity; import android.view.KeyEvent; import android.view.MotionEvent; Loading Loading @@ -1087,8 +1086,15 @@ public class PopupWindow { p.width = Math.min(p.width, displayFrameWidth); } if (onTop) { int popupTop = mScreenLocation[1] + yoff - mPopupHeight; if (popupTop < 0) { p.y += popupTop; } } else { p.y = Math.max(p.y, displayFrame.top); } } p.gravity |= Gravity.DISPLAY_CLIP_VERTICAL; Loading core/java/android/widget/Spinner.java +1 −35 Original line number Diff line number Diff line Loading @@ -23,14 +23,13 @@ import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.content.res.TypedArray; import android.database.DataSetObserver; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.graphics.Rect; import android.util.AttributeSet; import android.util.DisplayMetrics; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.view.ViewTreeObserver; /** Loading Loading @@ -70,8 +69,6 @@ public class Spinner extends AbsSpinner implements OnClickListener { private int mGravity; private LayoutObserver mLayoutObserver; /** * Construct a new spinner with the given context's theme. * Loading Loading @@ -172,7 +169,6 @@ public class Spinner extends AbsSpinner implements OnClickListener { com.android.internal.R.styleable.Spinner_dropDownHorizontalOffset, 0)); mPopup = popup; mLayoutObserver = new LayoutObserver(); break; } } Loading Loading @@ -425,11 +421,6 @@ public class Spinner extends AbsSpinner implements OnClickListener { handled = true; if (!mPopup.isShowing()) { if (mLayoutObserver != null) { final ViewTreeObserver vto = getViewTreeObserver(); vto.addOnGlobalLayoutListener(mLayoutObserver); vto.addOnScrollChangedListener(mLayoutObserver); } mPopup.show(); } } Loading Loading @@ -677,7 +668,6 @@ public class Spinner extends AbsSpinner implements OnClickListener { super.show(); getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE); setSelection(Spinner.this.getSelectedItemPosition()); setOnDismissListener(mLayoutObserver); } @Override Loading Loading @@ -728,28 +718,4 @@ public class Spinner extends AbsSpinner implements OnClickListener { ViewGroup.LayoutParams.WRAP_CONTENT); } } private class LayoutObserver implements ViewTreeObserver.OnGlobalLayoutListener, ViewTreeObserver.OnScrollChangedListener, PopupWindow.OnDismissListener { @Override public void onScrollChanged() { if (mPopup != null && mPopup.isShowing()) { mPopup.show(); } } @Override public void onGlobalLayout() { if (mPopup != null && mPopup.isShowing()) { mPopup.show(); } } @Override public void onDismiss() { ViewTreeObserver vto = getViewTreeObserver(); vto.removeGlobalOnLayoutListener(mLayoutObserver); vto.removeOnScrollChangedListener(mLayoutObserver); } } } Loading
core/java/android/widget/PopupWindow.java +8 −2 Original line number Diff line number Diff line Loading @@ -28,7 +28,6 @@ import android.graphics.drawable.StateListDrawable; import android.os.Build; import android.os.IBinder; import android.util.AttributeSet; import android.util.DisplayMetrics; import android.view.Gravity; import android.view.KeyEvent; import android.view.MotionEvent; Loading Loading @@ -1087,8 +1086,15 @@ public class PopupWindow { p.width = Math.min(p.width, displayFrameWidth); } if (onTop) { int popupTop = mScreenLocation[1] + yoff - mPopupHeight; if (popupTop < 0) { p.y += popupTop; } } else { p.y = Math.max(p.y, displayFrame.top); } } p.gravity |= Gravity.DISPLAY_CLIP_VERTICAL; Loading
core/java/android/widget/Spinner.java +1 −35 Original line number Diff line number Diff line Loading @@ -23,14 +23,13 @@ import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.content.res.TypedArray; import android.database.DataSetObserver; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.graphics.Rect; import android.util.AttributeSet; import android.util.DisplayMetrics; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.view.ViewTreeObserver; /** Loading Loading @@ -70,8 +69,6 @@ public class Spinner extends AbsSpinner implements OnClickListener { private int mGravity; private LayoutObserver mLayoutObserver; /** * Construct a new spinner with the given context's theme. * Loading Loading @@ -172,7 +169,6 @@ public class Spinner extends AbsSpinner implements OnClickListener { com.android.internal.R.styleable.Spinner_dropDownHorizontalOffset, 0)); mPopup = popup; mLayoutObserver = new LayoutObserver(); break; } } Loading Loading @@ -425,11 +421,6 @@ public class Spinner extends AbsSpinner implements OnClickListener { handled = true; if (!mPopup.isShowing()) { if (mLayoutObserver != null) { final ViewTreeObserver vto = getViewTreeObserver(); vto.addOnGlobalLayoutListener(mLayoutObserver); vto.addOnScrollChangedListener(mLayoutObserver); } mPopup.show(); } } Loading Loading @@ -677,7 +668,6 @@ public class Spinner extends AbsSpinner implements OnClickListener { super.show(); getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE); setSelection(Spinner.this.getSelectedItemPosition()); setOnDismissListener(mLayoutObserver); } @Override Loading Loading @@ -728,28 +718,4 @@ public class Spinner extends AbsSpinner implements OnClickListener { ViewGroup.LayoutParams.WRAP_CONTENT); } } private class LayoutObserver implements ViewTreeObserver.OnGlobalLayoutListener, ViewTreeObserver.OnScrollChangedListener, PopupWindow.OnDismissListener { @Override public void onScrollChanged() { if (mPopup != null && mPopup.isShowing()) { mPopup.show(); } } @Override public void onGlobalLayout() { if (mPopup != null && mPopup.isShowing()) { mPopup.show(); } } @Override public void onDismiss() { ViewTreeObserver vto = getViewTreeObserver(); vto.removeGlobalOnLayoutListener(mLayoutObserver); vto.removeOnScrollChangedListener(mLayoutObserver); } } }