0

さまざまな画面密度と向きをサポートするために、/res ディレクトリ内に次のフォルダーがあります。

/layout
/layout-land
/layout-small
/layout-small-land
/layout-large
/layout-large-land

上記の XML で異なるのは、コンポーネント間の配置だけです。たとえば、縦向きの場合:

    <LinearLayout
        android:id="@+id/linearLayout5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/linearLayout3"
        android:layout_marginLeft="20dp"
        android:layout_toRightOf="@+id/linearLayout3" />

一方、風景では、

    <LinearLayout
        android:id="@+id/linearLayout5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/linearLayout3"
        android:layout_marginLeft="60dp"        //widens the margin space
        android:layout_toRightOf="@+id/linearLayout3" />

ただし、向きを変更する場合は、縦長に対応した XML を使用しています。

AndroidManifest コード スニペットを次に示します。

 <activity
        android:name=".MyActivity"
        android:configChanges="keyboard|keyboardHidden|orientation|screenSize" />

Android 2.2 および 3.7 インチ画面のエミュレーターでアプリをテストしました。

4

1 に答える 1

2

ただし、向きを変更する場合は、縦長に対応した XML を使用しています。

これは、次の方法で Android に実行するように指示したためです。

android:configChanges="keyboard|keyboardHidden|orientation|screenSize

その属性を削除すると、Android はアクティビティを破棄して再作成し、新しいレイアウト リソースを適用します。

その属性を配置したら、これらの新しいレイアウト リソースを何らかの形でロードするのがあなたのonConfigurationChanged()仕事です。

于 2013-02-11T13:03:13.650 に答える