如何在InfoWindow(适用于Android的Google Maps API v2)上将drawable作为背景?

这是我的信息窗口的自定义布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/bg_infowindow" > <LinearLayout android:id="@+id/text_box" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" > <TextView style="@style/TexTitle" android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView style="@style/TextDistance" android:id="@+id/distance" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> </RelativeLayout> 

这是我的自定义适配器:

 public class MapInfoWindowAdapter implements InfoWindowAdapter{ private LayoutInflater inflater; private Context context; public MapInfoWindowAdapter(Context context){ inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); this.context = context; } @Override public View getInfoContents(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 getInfoWindow(Marker arg0) { // TODO Auto-generated method stub return null; } } 

这就是结果:

在这里输入图像说明

不过,我想要自定义绘制作为我的信息窗口的唯一背景,如何实现这一目标?

  • 如何在Google Maps v2 android中顺利移动当前位置标记
  • 跟踪用户的地图视图 - 适用于Android Maps API v2的MyLocationOverlaytypesfunction
  • Android Gradle如何为Android构buildGoogle API 4.2.2不适用于Android 4.2.2
  • android maps v2崩溃时重新打开片段
  • 在Google Maps Android API v2中使用包含文字的地图标记
  • 将button添加到可以注册点击的自定义InfoWindowAdapter视图
  • 如何知道在使用SupportMapFragment时地图已准备好使用?
  • 致命的例外:ZoomTableManager
  • getInfoContentsreplacegetInfoContents代码。 他们之间的区别是getInfoContents包装ViewGroup中的默认背景。

     @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; } 

    尝试这个..

    custom_infowindow.xml

     <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#80000000" android:orientation="vertical"> <ImageView android:src="@drawable/ic_launcher" android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="10dp"/> </LinearLayout> </LinearLayout> googleMap.setInfoWindowAdapter(new InfoWindowAdapter() { public View getInfoWindow(Marker arg0) { View v = getLayoutInflater().inflate(R.layout.custom_infowindow, null); return v; } public View getInfoContents(Marker arg0) { return null; } });