Android谷歌地图透明度

我正在制作一个地图应用程序。 我想在MapView下显示一些视图。 我使用的方法是:

mapView.setAlpha(0.5f); 

mapView没有任何反应。 当我尝试将这个方法应用到我的button时,它可以很好地工作,甚至将它应用到mapView的父视图中,除了mapView之外,每个子视图都是透明的。

我们如何使mapView透明? 我在这里看到了其他问题,我似乎找不到解决scheme。

在mapView.getMap()中是否有一些特殊的方法可以使它透明?

  • 在Android版Google地图v2中刷新制作者(ClusterItems)
  • 在添加标记Google Maps v2 Android时自动打开InfoWindow
  • 如何通过短信发送谷歌地图位置信息作为链接
  • 检查经度和纬度是否在一个圆圈内
  • 在Google地图v2上制作animation标记
  • 在Google地图V2上设置animation标记
  • Android Maps ClusteredMarkers - 不显示非集群?
  • 多边形触摸检测Google Map API V2
  • 您可以使用View.setAlpha() ( 文档 )设置地图的透明度。 这是一个工作的例子:

    activity_maps.xml:

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="THIS TEXT IS VISIBLE" android:textSize="24sp" android:gravity="center"/> <fragment android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/map" tools:context=".MapsActivity" android:name="com.google.android.gms.maps.SupportMapFragment" /> </RelativeLayout> 

    MapsActivity.java

     public class MapsActivity extends FragmentActivity implements OnMapReadyCallback{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_maps); ((SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.map)).getMapAsync(this); } @Override public void onMapReady(GoogleMap googleMap) { Marker m = googleMap.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title("Marker")); m.showInfoWindow(); View v = getSupportFragmentManager().findFragmentById(R.id.map).getView(); v.setAlpha(0.5f); // Change this value to set the desired alpha } } 

    结果看起来像这样(因为你看到文本是可见的,因为地图的透明度):

    在这里输入图像说明

    你可以通过你的MapView引用的setAlpha(float)方法来做到这一点,就像这样:

     mMapView = (MapView) findViewById(R.id.map); mMapView.onCreate(savedInstanceState); mMapView.getMapAsync(this); mMapView.setAlpha(0.5f); 

    如果您正在使用MapFragment,那么只需使用setAlpha(float)作为您的MapFragment。

    在您将2个视图(CameraView和MapView)放在自己身上的地方使用Framelayout。 并使用xml属性alpha来使MapView透明。