Search code examples
javaandroid-layoutandroid-fragmentsandroid-mapviewsupportmapfragment

Another Fragment on top op a Mapview (SupportMapFragment)


Im adding another Fragment to the screen. This screen already has en MapView in a SupportMapFragment so the added Fragment should be on top of the MapView. This new view cover like 2/3 of the screen and a big part of the Map but when I scroll on the View it scrolls the MapView underneath. This is not what i expected because the new View is added on top of the MapView. The new view exist of a relative layout containing a ImageView which wraps it contents. So when scrolling on the imageview (which has totally no functionality) it scrolls the MapView. Can anyone explain why this happens and if possible, provide me with a solution?

EDIT:

basically i have a MapView which fills the whole screen. This code sets up my mapview:

public void setUpMapIfNeeded(int satelliteMode, LatLng startPoint, float zoomLevel) {
        // Do a null check to confirm that we have not already instantiated the map.
        if (mapView == null) {
            // Try to obtain the map from the SupportMapFragment.
            mapView = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.mapview))
                    .getMap();
            // Check if we were successful in obtaining the map.
            if (mapView != null) {
                setUpMap(satelliteMode, startPoint, zoomLevel);
            }
        }
    }

    private void setUpMap(int satelliteMode, LatLng startPoint, float zoomLevel) {
        // more settings
        }

Then when a user clicks a marker a fragment must be shown on top of the mapview.

public void createDetailView() {
        detailView = new DetailViewFragment();
        android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager();
        android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.add(R.id.viewLayout, detailView).commit();
        fragmentManager.executePendingTransactions();
    }

This all works fine. The view is shown (which is about 2/3 of the whole screen) but user can scroll the map when swiping the detailview. The detailview consist of a relative layout with a lot of text and buttons:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
    android:layout_marginTop="45sp">


<!-- a lot of text and buttons here -->

</RelativeLayout>

Solution

  • So I still havent found a proper way to deal with this. Instead I just disabled all touches and clicks on the mapview when another view is on top of the mapview which btw works ok.