MapFragment in ScrollView

android, android-mapview, google-maps, google-play-services

Solution

Applying a transparent image over the mapview fragment seems to resolve the issue. It's not the prettiest, but it seems to work. Here's an XML snippet that shows this:

<RelativeLayout
        android:id="@+id/relativeLayout1"
        android:layout_width="match_parent"
        android:layout_height="300dp" >

        <fragment
            android:id="@+id/map"
            android:name="com.google.android.gms.maps.MapFragment"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"/>

        <ImageView
            android:id="@+id/imageView123"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:src="@drawable/temp_transparent" />         
</RelativeLayout>

Problem

I have one of the new `MapFragment`s in a `ScrollView`. Actually it's a `SupportMapFragment`, but anyway. It works, but there are two problems: When scrolled, it leaves a black mask behind. The black covers exactly the area where the map was, except for a hole where the +/- zoom buttons were. See screenshot below. This is on Android 4.0. The view doesn't use `requestDisallowInterceptTouchEvent()` when the user interacts with the map to prevent the `ScrollView` intercepting touches, so if you try to pan vertically in the map, it just scrolls the containing `ScrollView`. I could theoretically derive a view class `MapView` and add that functionality, but how can I get `MapFragment` to use my customised `MapView` instead of the standard one?

Original source