次のレイアウトのポートレートモードで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)にしようとすると、例外が発生します。