10

Ich arbeite an einer Mapping-App. Und ich möchte einige Ansichten unter dem MapView anzeigen. Ich bin mit der Methode:Android Google Maps Transparenz

mapView.setAlpha(0.5f); 

Nichts passiert mit dem mapView. Wenn ich versuche, diese Methode auf meine Schaltflächen anzuwenden, funktioniert das problemlos. Selbst wenn Sie diese Methode auf die übergeordnete Ansicht von mapView anwenden, wird jede untergeordnete Ansicht bis auf die mapView transparent.

Wie können wir den mapView transparent machen? Ich habe hier andere Fragen untersucht und ich kann keine Lösung finden.

Gibt es eine spezielle Methode in der mapView.getMap(), die wir verwenden können, um sie transparent zu machen?

+0

Ich denke nicht, dass Sie das mit der Kartenansicht erreichen könnten ... Google ist eine ViewGroup und fügt eine Menge Dinge hinzu. Versuchen Sie, eine andere Kartenbibliothek zu verwenden oder Ihre UI/UX zu überdenken. BTW ... warum würdest du sowas wollen, wird echt schlecht aussehen wenn das erreicht werden kann. –

+0

^was er sagte, das wird sowieso schlecht aussehen. Vermeiden Sie diese Idee wie die Pest. Stattdessen machen Sie die Dinge oben transparent (Tasten, Symbole, etc ...) –

+0

Ich weiß, es wird schlecht aussehen, aber wie werden Sie es erreichen? Was fügt Google hinzu, das es immer undurchsichtig macht? Welche andere Kartenbibliothek wäre die beste Alternative? @MarianoZorrilla – Marlon

Antwort

8

Sie können die Transparenz für die Karte mit View.setAlpha() (documentation) festlegen. Hier ist ein funktionierendes Beispiel:

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

Das Ergebnis sieht wie folgt aus (wie Sie den Text zu sehen ist sichtbar, weil der die Transparenz der Karte):

enter image description here

1

Sie können dies durch die setAlpha (float) Methode Ihrer MapView Referenz, wie folgt aus:

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

Wenn Sie MapFragment verwenden, dann nur setAlpha (float) für Ihre MapFragment verwenden.

0

Verwenden Sie ein Framelayout, in dem Sie Ihre 2 Ansichten (CameraView und MapView) über sich selbst platzieren. Und verwenden Sie das XML-Attribut Alpha, um MapView transparent zu machen.