Google Google отображает прозрачность

Я работаю над картографическим приложением. И я хочу показать некоторые представления в MapView. Я использую метод:

    mapView.setAlpha(0.5f);

Ничего не происходит с mapView. Когда я пытаюсь применить этот метод к моим кнопкам, он отлично работает, даже применяя его к родительскому представлению mapView делает каждый дочерний вид прозрачным, за исключением mapView.

Как мы можем сделать mapView прозрачным? Я рассмотрел другие вопросы здесь, и я не могу найти решение.

Есть ли какой-нибудь специальный метод в mapView.getMap(), который мы можем использовать, чтобы сделать его прозрачным?

Ответ 1

Вы можете установить прозрачность для карты, используя 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
    }
}

Результат выглядит следующим образом (так как вы видите, что текст виден из-за прозрачности карты):

введите описание изображения здесь

Ответ 2

Вы можете сделать это с помощью метода setAlpha (float) вашей ссылки MapView, например:

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

Если вы используете MapFragment, просто используйте setAlpha (float) для вашего MapFragment.

Ответ 3

Используйте Framelayout, где вы помещаете свои 2 вида (CameraView и MapView) поверх них. И используйте атрибут xml alpha, чтобы сделать MapView прозрачным.