19

我正在将具有自定义布局的 InfoWindowAdapter 添加到基于 Android Google Maps API v2 的地图片段中。我在从 getInfoWindow() 返回的视图中放置了一个按钮,虽然它显示得非常好,但当我单击所述按钮时,窗口本身会记录一次单击(像往常一样以淡黄色闪烁),而按钮没有。

如何使信息窗口中的按钮“可点击”?而且,通过扩展,信息窗口内的任何视图?

4

4 回答 4

10

虽然您可以使用 将信息窗口设置为任意视图GoogleMap.setInfoWindowAdapter(),但在地图上呈现的信息窗口不是实时视图。相反,它是适配器返回视图时的视图快照(参见此处)。因此,不幸的是,一旦将其放置在地图上,它的行为就不像标准视图。

于 2012-12-04T23:02:23.507 回答
8

相反,使用 OnMarkerClickListener 侦听标记单击事件并直接显示您自己的完整视图。但是,将其锚定到标记的位置可能需要更多的工作。尝试带有 showAtLocation 的PopupWindow(查看父级,int 重力,int x,int y)

于 2012-12-05T00:23:54.873 回答
4

也许您可以在 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();

        }
    });
于 2013-01-24T10:45:45.287 回答
0

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
   }
}
于 2019-11-07T23:56:45.567 回答