解决方法1
这是support.v7
下PopupMenu
的一个bug,改用android.widget.PopupWindow
包下的PopupMenu
就可以了。当然PopupMenu
只兼容到Kitkat
,所以对于绝大部分脸小的应用是不可行的。
解决方法2
重写与PopupMenu
绑定的AnchorView
的requestRectangleOnScreen(Rect rectangle, boolean immediate)
方法,并且return false
。比如当PopupMenu
的锚点View
为ImageView
时。
public class NoScrollImageVIew extends ImageView {
public NoScrollImageVIew(Context context) {
super(context);
}
public NoScrollImageVIew(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public NoScrollImageVIew(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public boolean requestRectangleOnScreen(Rect rectangle, boolean immediate) {
return false;
}
}
AnchorView
指PopupMenu
构造函数的第二个参数