我正在将具有自定义布局的 InfoWindowAdapter 添加到基于 Android Google Maps API v2 的地图片段中。我在从 getInfoWindow() 返回的视图中放置了一个按钮,虽然它显示得非常好,但当我单击所述按钮时,窗口本身会记录一次单击(像往常一样以淡黄色闪烁),而按钮没有。
如何使信息窗口中的按钮“可点击”?而且,通过扩展,信息窗口内的任何视图?
我正在将具有自定义布局的 InfoWindowAdapter 添加到基于 Android Google Maps API v2 的地图片段中。我在从 getInfoWindow() 返回的视图中放置了一个按钮,虽然它显示得非常好,但当我单击所述按钮时,窗口本身会记录一次单击(像往常一样以淡黄色闪烁),而按钮没有。
如何使信息窗口中的按钮“可点击”?而且,通过扩展,信息窗口内的任何视图?
虽然您可以使用 将信息窗口设置为任意视图GoogleMap.setInfoWindowAdapter()
,但在地图上呈现的信息窗口不是实时视图。相反,它是适配器返回视图时的视图快照(参见此处)。因此,不幸的是,一旦将其放置在地图上,它的行为就不像标准视图。
相反,使用 OnMarkerClickListener 侦听标记单击事件并直接显示您自己的完整视图。但是,将其锚定到标记的位置可能需要更多的工作。尝试带有 showAtLocation 的PopupWindow(查看父级,int 重力,int x,int y)
也许您可以在 InfoWindowClickListener 中设置自定义 AlartDialog 来切换某些事件
map.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {
public void onInfoWindowClick(Marker marker) {
String[] items={"onefunction","twofunction"};
AlertDialog.Builder itemDilog = new AlertDialog.Builder(context);
itemDilog.setTitle("");
itemDilog.setCancelable(false);
itemDilog.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
switch(which){
case 0:{
onefunction();
}break;
case 1:{
twofunction();
}break;
}
}
});
itemDilog.show();
}
});
CustomInfoWindowAdapter 设置标签:
mWindow.findViewById(R.id.chat).setTag("chatTag"); // button
和:
@Override
public void onInfoWindowClick(Marker marker) {
if(customInfoWindowAdapter.getInfoContents(marker).findViewById(R.id.chat).getTag().equals("chatTag")) {
// any code here
}
}