私は最近、Android アプリのレイアウトを作成しようとしています。最初に実際のハンドセットでデバッグしたところ、レイアウトは問題ないように見えました。ただし、後でエミュレーターで実行しようとしましたが、異なる解像度で実行しました。すると、画面に収まりません。幅は問題ないように見えますが、高さはそうではありません。私のハンドセットの解像度は 480x800 です。アスペクト比と何か関係があるのでしょうか。私はすべての次元を dp で持っています。エミュレーターの解像度には問題ないように見えるものもあれば、そうでないものもあります。Android はそれ自体をスケーリングするべきではありませんか?
レイアウトファイルの外観は次のとおりです。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<RelativeLayout
android:id="@+id/RelativeLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<LinearLayout
android:orientation="vertical"
android:layout_width="0px"
android:layout_height="0px"
android:focusable="true"
android:focusableInTouchMode="true"/>
<EditText
android:id="@+id/SetAddr"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/StartServer">
</EditText>
<LinearLayout
android:orientation="horizontal"
android:id="@+id/LinearLayout2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/SetAddr"
android:gravity="center_horizontal">
<Button
android:id="@+id/PingStart"
android:layout_width="@dimen/StartButtonWidth"
android:layout_height="@dimen/StartButtonHeight"
android:layout_below="@id/SetAddr"
android:text="@string/Start"
/>
<Button
android:id="@+id/PingStop"
android:layout_width="@dimen/StopButtonWidth"
android:layout_height="@dimen/StopButtonHeight"
android:layout_below="@id/SetAddr"
android:layout_toRightOf="@id/PingStart"
android:text="@string/Stop"
/>
</LinearLayout>
<TextView
android:id="@+id/PingResults"
android:layout_width="@dimen/ResultsViewWidth"
android:layout_height="@dimen/ResultsViewHeight"
android:layout_below="@id/LinearLayout2"
android:textColor="#000"
android:background="#FFF"
android:layout_centerHorizontal="true"
android:scrollbars="vertical"
/>
<LinearLayout
android:orientation="horizontal"
android:id="@+id/LinearLayout3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/PingResults"
android:gravity="center_horizontal">
<Button
android:id="@+id/PingStartTrace"
android:layout_width="@dimen/OptionButtonWidth"
android:layout_height="@dimen/OptionButtonHeight"
android:text="@string/Trace" >
</Button>
<Button
android:id="@+id/PingStartLookup"
android:layout_width="@dimen/OptionButtonWidth"
android:layout_height="@dimen/OptionButtonHeight"
android:layout_toRightOf="@id/PingStartTrace"
android:text="@string/Lookup" >
</Button>
<Button
android:id="@+id/PingStartWebget"
android:layout_width="@dimen/OptionButtonWidth"
android:layout_height="@dimen/OptionButtonHeight"
android:layout_toRightOf="@id/PingStartLookup"
android:text="@string/WebGet" >
</Button>
<Button
android:id="@+id/PingStartOptions"
android:layout_width="@dimen/OptionButtonWidth"
android:layout_height="@dimen/OptionButtonHeight"
android:layout_toRightOf="@id/PingStartWebget"
android:text="@string/Options" >
</Button>
</LinearLayout>
</RelativeLayout>
</LinearLayout>
Dimens ファイル:
<resources>
<dimen name="StartButtonHeight">50dp</dimen>
<dimen name="StartButtonWidth">250dp</dimen>
<dimen name="StopButtonHeight">50dp</dimen>
<dimen name="StopButtonWidth">60dp</dimen>
<dimen name="ResultsViewWidth">290dp</dimen>
<dimen name="ResultsViewHeight">330dp</dimen>
<dimen name="OptionButtonHeight">50dp</dimen>
<dimen name="OptionButtonWidth">75dp</dimen>
</resources>
一部の解像度では、テキストビューの半分しか表示されず、その下にボタンが表示されません。