让我们假设一个 800x1280 像素的设备在纵向模式下具有以下布局:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/MyScrollView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
android:scrollbars="none"
android:fadingEdgeLength="0dip" >
<LinearLayout
android:id="@+id/MyLinearLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
</LinearLayout>
</ScrollView>
并在 Activity 清单中使用android:configChanges="orientation" 。
动态地,我将两个子视图添加到 MyLinearLayout,其 Layout 的width = MATCH_PARENT和height = getWindowManager().getDefaultDisplay().getHeight()。所以,我可以在两个孩子之间垂直滚动,每个孩子都占据整个屏幕。
现在,当设备进入横向时,由于 MATCH_PARENT 属性,孩子的宽度从原来的 800 延伸到 1280 的尺寸。
在垂直方向上,它们不会被拉伸,因为它们最初是用 1280 的固定高度创建的,所以它们保持 1280 的高度。
垂直拉伸这些视图的正确方法是什么?
如果我尝试将 onConfigurationChanged 中的 child.setLayoutParams 设置为 width = MATCH_PARENT 和 height = 2048(即 1280 * 1280/800),则会出现异常。