Android 向自定义InfoWindowAdapter视图添加可注册单击的按钮

Android 向自定义InfoWindowAdapter视图添加可注册单击的按钮,android,google-maps,google-maps-android-api-2,Android,Google Maps,Google Maps Android Api 2,我正在添加一个带有自定义布局的InfoWindowAdapter到基于Android Google Maps API v2的地图片段中。我在从getInfoWindow()返回的视图中放置了一个按钮,虽然它显示得非常好,但当我单击所述按钮时,窗口本身会显示一个单击(像往常一样以淡黄色闪烁),而按钮不会 如何使信息窗口中的按钮“可单击”?此外,信息窗口内的任何视图都可以扩展?虽然可以使用将信息窗口设置为任意视图,但在地图上渲染的信息窗口不是实时视图。相反,它是适配器返回视图时视图的快照(请参阅)。

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


如何使信息窗口中的按钮“可单击”?此外,信息窗口内的任何视图都可以扩展?

虽然可以使用将信息窗口设置为任意视图,但在地图上渲染的信息窗口不是实时视图。相反,它是适配器返回视图时视图的快照(请参阅)。因此,不幸的是,一旦将其放置在地图上,它的行为与标准视图不同。

相反,请使用onmarkerclicklister监听标记单击事件,并直接显示您自己的完整视图。然而,将其锚定到标记的位置可能需要更多的工作。尝试使用showAtLocation(查看父对象、整数重力、整数x、整数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
以及:


您好,Anthony,您在哪里找到说明它是快照的文档?我只是在你的回答中发现了这一点——但谷歌文档中没有任何内容(尽可能有限)。文档中有一条说明了这一信息。不,这不是他/她想要的。看这里:看:
  @Override
public void onInfoWindowClick(Marker marker) {


   if(customInfoWindowAdapter.getInfoContents(marker).findViewById(R.id.chat).getTag().equals("chatTag")) {
      // any code here
   }
}