10

Sto lavorando a un'app di mappatura. E voglio mostrare alcune viste sotto il MapView. Sto usando il metodo:Trasparenza mappe Google Android

mapView.setAlpha(0.5f); 

Non succede nulla al MapView. Quando provo ad applicare questo metodo ai miei pulsanti funziona perfettamente, anche applicandolo alla vista padre di mapView rende trasparente ogni visualizzazione figlio eccetto per mapView.

Come possiamo rendere trasparente la mappa? Ho esaminato altre domande qui e non riesco a trovare una soluzione.

C'è qualche metodo speciale in mapView.getMap() che possiamo usare per renderlo trasparente?

+0

Non penso che si possa ottenere ciò con il mapview ... pur essendo un ViewGroup, Google aggiunge un sacco di cose ad esso. Prova ad usare un'altra libreria di mappe o ripensa la tua UI/UX. BTW ... perché vorresti qualcosa del genere, sembrerebbe davvero brutto se riuscirai a raggiungerlo. –

+0

^quello che ha detto, che sarà male comunque. Evita questa idea come la piaga .. invece fai in modo che le cose siano trasparenti (pulsanti, icone, ecc ...) –

+0

So che sembrerà male, ma come lo realizzerai comunque? Che cosa aggiunge Google per renderlo sempre opaco? Quale altra libreria di mappe sarebbe la migliore alternativa? @MarianoZorrilla – Marlon

risposta

8

È possibile impostare la trasparenza per la mappa utilizzando View.setAlpha() (documentation). Ecco un esempio di lavoro:

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

Il risultato assomiglia a questo (come si vede il testo è visibile a causa della trasparenza della mappa):

enter image description here

1

È possibile farlo attraverso il metodo setAlpha (float) del vostro riferimento MapView, in questo modo:

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

Se si utilizza MapFragment, poi basta usare setAlpha (float) per il vostro MapFragment.

0

Utilizzare un Framelayout in cui vengono collocate le 2 viste (CameraView e MapView) su se stessi. E usa l'attributo xml alfa per rendere trasparente MapView.

Problemi correlati