我想将上下文操作栏菜单的显示与来自 Google Maps API v2 的信息窗口同步。我遇到的主要问题是似乎没有办法可靠地监视信息窗口的状态,并且两个 UI 部分很容易不同步。
到目前为止,这大致是我所拥有的:
private ActionMode mActionMode;
private ActionMode.Callback mActionModeCallback
= new ActionMode.Callback() { ... };
public boolean onMarkerClick(Marker marker) {
if (mActionMode != null) {
// This case should occur if the user taps an already selected marker.
mActionMode.finish();
return false;
}
// Start the contextual actionbar using the ActionMode.Callback defined above
mActionMode = this.startActionMode(mActionModeCallback);
return false;
}
public void onMapClick(LatLng point) {
// Clicking the map normally only closes any info windows.
// We must close the contextual action bar menu as well.
if (mActionMode != null)
mActionMode.finish();
}
主要问题似乎是在显示信息窗口时单击标记本身时不会调用它onMarkerClick
;onMapClick
这种交互仍然足以关闭信息窗口......
如果有人有更可靠的方法来跟踪信息窗口的状态或监控那些丢失的点击事件,我会很高兴听到!