Добавление кнопки в пользовательский вид InfoWindowAdapter, который может регистрировать клики
Я добавляю InfoWindowAdapter с настраиваемым макетом к фрагменту карты на основе Android Google Maps API v2. Я положил кнопку в представлении, которое я возвращаю из getInfoWindow(), и пока он отображается отлично, когда я нажимаю на указанную кнопку, само окно регистрирует щелчок (мигание с желтоватым оттенком, как обычно), в то время как кнопка не работает.
Как я могу сделать кнопку в информационном окне "clickable"? И, в дополнение, любое представление внутри информационного окна?
Ответы
Ответ 1
Вместо этого прослушивайте события маркерного щелчка с помощью OnMarkerClickListener и сразу показывайте свой собственный полный просмотр. Однако может быть немного больше работы, чтобы привязать его к местоположению маркера. Попробуйте PopupWindow с showAtLocation (просмотр родительского, int gravity, int x, int y)
Ответ 2
Пока вы можете установить информационное окно как произвольное представление с помощью GoogleMap.setInfoWindowAdapter()
, информационное окно, отображаемое на карте, не является живым. Вместо этого это снимок представления во время отображения представления адаптером (см. здесь). Таким образом, к сожалению, он не ведет себя как стандартный вид, когда он помещен на карту.
Ответ 3
Возможно, вы можете настроить AlartDialog в InfoWindowClickListener для переключения события
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();
}
});