PopupMenu作为弹出菜单是很好用的,但是默认只能弹出在view的下方,而实际中这样的弹出位置可能无法满足需求,比如自定义的canvasView,要在canvasView长按的位置弹出菜单,PopupMenu只有一个show的方法,没有可以设置位置的方法,但当我们跟进源码去看时发现了这样的一段代码:
PopupMenu.class
public void show() {
this.mPopup.show();
}
再对mPopup.show跟踪时进入到了MenuPopupHelper,又有如下的代码
public void show() {
if (!this.tryShow()) {
throw new IllegalStateException("MenuPopupHelper cannot be used without an anchor");
}
}
public void show(int x, int y) {
if (!this.tryShow(x, y)) {
throw new IllegalStateException("MenuPopupHelper cannot be used without an anchor");
}
}
public boolean tryShow() {
if (this.isShowing()) {
return true;
} else if (this.mAnchorView == null) {
return false;