10

私はマッピングアプリを開発中です。 MapViewではいくつかのビューを表示したいと思います。 私はメソッドを使用しています:Android Googleマップの透明度

mapView.setAlpha(0.5f); 

mapViewに何も起こりません。私のボタンにこのメソッドを適用しようとすると、mapViewの親ビューにそれを適用してもうまくいきますが、mapViewを除くすべての子ビューが透明になります。

mapViewを透明にするにはどうすればよいですか?私はここで他の質問を見てきました。私は解決策を見つけることができません。

透明にするために使用できるmapView.getMap()には特別なメソッドがありますか?

+0

私はあなたがmapviewでそれを達成できるとは思わない... ViewGroupさえ、Googleはそれに多くのものを追加します。別のマップライブラリを使用するか、UI/UXを再考してみてください。 BTW ...なぜあなたはそれが欲しいでしょうか、達成することができれば本当に悪く見えますか? –

+0

^彼が言ったことは、とにかく悪く見えるだろう。疫病のようなこのような考えを避けてください。代わりに、上のものを透明にしてください(ボタン、アイコンなど...) –

+0

私はそれが悪く見えますが、どのようにそれを達成しますか? Googleがそれを常に不透明にしてくれるのは何ですか?他にどのようなマップライブラリが最適な選択肢ですか? @MarianoZorrilla – Marlon

答えて

8

View.setAlpha()documentation)を使用して、マップの透明度を設定できます。ここでは実施例である:

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

結果はご覧のようなテキストが表示されている(このようになりますの理由地図の透明度):

enter image description here

1

あなたはこのように、あなたのMapView参照のsetAlpha(フロート)メソッドを介してこれを行うことができます:あなたはMapFragmentを使用している場合は、ちょうどあなたのMapFragmentためsetAlpha(フロート)を使用し、

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

0

2つのビュー(CameraViewとMapView)を自分で作成するFramelayoutを使用します。 xml属性alphaを使用して、MapViewを透明にします。

関連する問題