地图视图未完全加载

时间:2015-11-26 09:13:07

标签: android google-maps

我有一个滚动视图,里面有一个相对布局,顶部有一个灵活大小的内容,下面有一个地图视图。如果整个内容的高度小于屏幕视图端口(滚动视图),我希望地图视图填充下面的剩余空间。如果整个内容大于屏幕视图端口,那么我希望地图视图至少具有一定的高度。这是我所做过的剥离版本。

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:map="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:id="@+id/flexContent"
            android:layout_width="match_parent"
            android:layout_height="300dp"
            android:layout_alignParentTop="true"
            android:background="#086dd9"
            android:gravity="center"
            android:text="Flexible content here"
            android:textColor="@android:color/white"
            android:textSize="22sp" />

        <com.google.android.gms.maps.MapView
            android:id="@+id/mapView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_alignParentBottom="true"
            android:layout_below="@id/flexContent"
            android:background="#f73f3f"
            android:minHeight="120dp"
            map:mapType="normal"
            tools:ignore="MissingPrefix" />
    </RelativeLayout>


</ScrollView>

当整个内容的高度小于屏幕视图端口的高度(滚动视图的高度)时,它按预期工作。但是,如果不是这样,除了地图没有加载到mapview的全高之外,一切都很好。请看下面的图片

内容小于滚动视图 enter image description here

内容大于scrollview

enter image description here

正如您在第二张图片中看到的那样,地图视图本身是尊重布局中设置的minHeight 120dp约束(我已将地图视图的背景设置为红色),但实际地图未加载到其完整高度。

如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

我通过将MapView包装在LinearLayout中来解决上述问题。我的最终布局看起来与此类似。希望它能帮助未来的任何人:)

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:map="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:id="@+id/flexContent"
            android:layout_width="match_parent"
            android:layout_height="300dp"
            android:layout_alignParentTop="true"
            android:background="#086dd9"
            android:gravity="center"
            android:text="Flexible content here"
            android:textColor="@android:color/white"
            android:textSize="22sp" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_alignParentBottom="true"
            android:layout_below="@id/flexContent"
            android:orientation="vertical"
            android:minHeight="120dp">

            <com.google.android.gms.maps.MapView
                android:id="@+id/mapView"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1"
                android:background="#f73f3f"
                map:mapType="normal"
                tools:ignore="MissingPrefix" />

        </LinearLayout>

    </RelativeLayout>

</ScrollView>