将布局置于 google 地图标记上方 Android
Put layout above google Map marker Android
我有一个自定义 "InfoWindow" 标记,它有按钮,但默认用户不能点击按钮或在该布局的列表上滑动,因为该信息 window 就像图片。
注意:中的解决方案不适用于我的问题,因为不同的标记具有不同的信息Windows(我已经尝试修改该答案但没有成功)。
所以,为了解决我的问题,我还是在用户点击标记时在标记上方放置了一个布局。如何实现将布局放在标记上方?
在这个例子中,我在布局中有一个包含可点击项目的列表
我通过添加自定义信息 window 适配器实现了这一点。然后将其设置为我的地图。在适配器的 getInfoWindow()
中,您可以将所有点击侦听器写入您的 views.Here 是代码。
private class CustomInfoWindowAdapter implements GoogleMap.InfoWindowAdapter {
private View view;
public CustomInfoWindowAdapter() {
view = getLayoutInflater().inflate(R.layout.custom_info_window, null);
}
@Override
public View getInfoContents(Marker marker) {
if (marker != null
&& marker.isInfoWindowShown()) {
marker.hideInfoWindow();
marker.showInfoWindow();
}
return null;
}
@Override
public View getInfoWindow(final Marker marker) {
final ImageView image = ((ImageView) view.findViewById(R.id.badge));
final String title = marker.getTitle();
final TextView titleUi = ((TextView) view.findViewById(R.id.title));
if (title != null) {
titleUi.setText(title);
} else {
titleUi.setText("");
}
return view;
}
}
并设置为按此映射
private GoogleMap mMap;
mMap.setInfoWindowAdapter(new CustomInfoWindowAdapter());
希望对您有所帮助。编码愉快...
可以在 link 上找到解决方案:
基本思想是使用 PopupWindow
在屏幕上显示布局,然后使用答案中描述的 updatePopup
方法调整其位置以将其放置在标记上。每次相机变化(监听CameraChangeListener
),你调用updatePopup
方法。
我有一个自定义 "InfoWindow" 标记,它有按钮,但默认用户不能点击按钮或在该布局的列表上滑动,因为该信息 window 就像图片。
注意:中的解决方案不适用于我的问题,因为不同的标记具有不同的信息Windows(我已经尝试修改该答案但没有成功)。
所以,为了解决我的问题,我还是在用户点击标记时在标记上方放置了一个布局。如何实现将布局放在标记上方?
在这个例子中,我在布局中有一个包含可点击项目的列表
我通过添加自定义信息 window 适配器实现了这一点。然后将其设置为我的地图。在适配器的 getInfoWindow()
中,您可以将所有点击侦听器写入您的 views.Here 是代码。
private class CustomInfoWindowAdapter implements GoogleMap.InfoWindowAdapter {
private View view;
public CustomInfoWindowAdapter() {
view = getLayoutInflater().inflate(R.layout.custom_info_window, null);
}
@Override
public View getInfoContents(Marker marker) {
if (marker != null
&& marker.isInfoWindowShown()) {
marker.hideInfoWindow();
marker.showInfoWindow();
}
return null;
}
@Override
public View getInfoWindow(final Marker marker) {
final ImageView image = ((ImageView) view.findViewById(R.id.badge));
final String title = marker.getTitle();
final TextView titleUi = ((TextView) view.findViewById(R.id.title));
if (title != null) {
titleUi.setText(title);
} else {
titleUi.setText("");
}
return view;
}
}
并设置为按此映射
private GoogleMap mMap;
mMap.setInfoWindowAdapter(new CustomInfoWindowAdapter());
希望对您有所帮助。编码愉快...
可以在 link 上找到解决方案:
基本思想是使用 PopupWindow
在屏幕上显示布局,然后使用答案中描述的 updatePopup
方法调整其位置以将其放置在标记上。每次相机变化(监听CameraChangeListener
),你调用updatePopup
方法。