可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I can customize the content of the infoWindow with a simple block of code:
private GoogleMap mMap; mMap.setInfoWindowAdapter(new InfoWindowAdapter() { @Override public View getInfoWindow(Marker arg0) { return null; } @Override public View getInfoContents(Marker arg0) { View v = getLayoutInflater().inflate(R.layout.custom_infowindow, null); return v; } });
But this changes only the content and not the infoWindow itself. It still stays white with a small shadow on the bottom and now a red HELLO text is visible with black bg. I want to change this default infoWindow to a transparent black rectangle. How can I do this?

回答1:
you have to write your code in getInfoWindow method. so you can customize info window. e.g.
@Override public View getInfoWindow(Marker marker) { // Getting view from the layout file View v = inflater.inflate(R.layout.map_popup, null); TextView title = (TextView) v.findViewById(R.id.title); title.setText(marker.getTitle()); TextView address = (TextView) v.findViewById(R.id.distance); address.setText(marker.getSnippet()); return v; } @Override public View getInfoContents(Marker arg0) { // TODO Auto-generated method stub return null; }
回答2:

use this way...
myMap.setInfoWindowAdapter(new InfoWindowAdapter() { @Override public View getInfoWindow(Marker arg0) { ContextThemeWrapper cw = new ContextThemeWrapper( getApplicationContext(), R.style.Transparent); // AlertDialog.Builder b = new AlertDialog.Builder(cw); LayoutInflater inflater = (LayoutInflater) cw .getSystemService(LAYOUT_INFLATER_SERVICE); View layout = inflater.inflate(R.layout.custom_infowindow, null); return layout; } @Override public View getInfoContents(Marker arg0) { return null; } });
R.style.Transparent add this in your style.xml
#00000000
Edited:
custom_infowindow.xml
回答3:
Try this...I have change little bit of your code.
Also change this...
mMap.setInfoWindowAdapter(new InfoWindowAdapter() { public View getInfoWindow(Marker arg0) { View v = getLayoutInflater().inflate(R.layout.custom_infowindow, null); return v; } public View getInfoContents(Marker arg0) { //View v = getLayoutInflater().inflate(R.layout.custom_infowindow, null); return null; } });
I hope it will work...:)
回答4:
You need to setInfoWindowAdapter() right after map.addMarker() method for this to take effect. Do not call setInfoWindowAdapter() in onMarkerClick().