我有一个滚动视图,里面有一个相对布局,顶部有一个灵活大小的内容,下面有一个地图视图。如果整个内容的高度小于屏幕视图端口(滚动视图),我希望地图视图填充下面的剩余空间。如果整个内容大于屏幕视图端口,那么我希望地图视图至少具有一定的高度。这是我所做过的剥离版本。
<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的全高之外,一切都很好。请看下面的图片
内容大于scrollview
正如您在第二张图片中看到的那样,地图视图本身是尊重布局中设置的minHeight 120dp约束(我已将地图视图的背景设置为红色),但实际地图未加载到其完整高度。
如何解决这个问题?
答案 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>