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>

アクティビティマニフェストのandroid:configChanges="orientation"を使用します。

動的に、 width=MATCH_PARENTおよびheight=getWindowManager()。getDefaultDisplay()。getHeight()のレイアウトでMyLinearLayoutに2つの子ビューを追加します。したがって、それぞれが画面全体を占める2つの子の間を垂直方向にスクロールできます。

これで、デバイスが横向きになると、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)を呼び出す必要がありました。これは、ランドスケープモードでコンテンツを2倍にストレッチしていました。画面の境界を超えます。

于 2012-06-07T20:07:48.723 に答える