0

让我们假设一个 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_PARENTheight = getWindowManager().getDefaultDisplay().getHeight()。所以,我可以在两个孩子之间垂直滚动,每个孩子都占据整个屏幕。

现在,当设备进入横向时,由于 MATCH_PARENT 属性,孩子的宽度从原来的 800 延伸到 1280 的尺寸。

在垂直方向上,它们不会被拉伸,因为它们最初是用 1280 的固定高度创建的,所以它们保持 1280 的高度。

垂直拉伸这些视图的正确方法是什么?

如果我尝试将 onConfigurationChanged 中的 child.setLayoutParams 设置为 width = MATCH_PARENT 和 height = 2048(即 1280 * 1280/800),则会出现异常。

4

1 回答 1

0

我正在使用动态实例化的 CanvasView(来自 S-Pen SDK)孩子。在这个答案的帮助下,我能够做我想做的事。

我已经固有com.samsung.sdraw.CanvasView并覆盖了onMeasure以保持我想要的纵横比,我需要为每个孩子调用setEnableZoom(false)来纠正内容拉伸,它在横向模式下以双倍拉伸内容,走出屏幕边界。

于 2012-06-07T20:07:48.723 回答