ストックPIN入力画面に似たPIN画面で始まるアプリを構築していますが、問題は、すべての種類の電話でデザインを機能させることができないことです。簡単にするために、ポートレートモードについてのみ話しましょう(以下のレイアウト xml をリンクします):
- 画面の小さいデバイスでは、ボタンのサイズを dp 単位で小さくして、ボタンが画面の端にはみ出さないようにする必要がありました
- 大型デバイスではボタンが大きくなるため、画面の中央にボタンが密集することはありません
- サポートが必要な古い (2.3) デバイスがいくつかあります。そのうちの 1 つは 5 インチのタブレットで、ボタンがぶら下がっています (サイズ係数が大きなカテゴリに分類されるため)。ただし、通常のサイズにする必要があります。幅が最小のグループについては知っていますが、それは 3.2 以上のデバイスのみです。
形状やサイズに関係なく、すべてのデバイスである程度一貫した外観にしたいと考えています。要素の動的なサイズ変更を考えましたが、サポートがなく、AbsoluteLayout クラスに近づきたくありません。
誰かが私のフラストレーションを共有していますか、または良い解決策を開発しましたか?
私が使用しているレイアウトファイル:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="fill_parent" >
<TextView android:id="@+id/enter_pin"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/DIALOG_ENTERPIN" />
<EditText android:id="@+id/pin_box"
android:layout_below="@id/enter_pin"
android:layout_centerHorizontal="true"
android:layout_width="fill_parent" />
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_below="@id/pin_box"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<TableRow android:gravity="center" >
<Button android:id="@+id/pin_1"
style="@style/pinbutton"
android:text="1" />
<Button android:id="@+id/pin_2"
style="@style/pinbutton"
android:text="2" />
<Button android:id="@+id/pin_3"
style="@style/pinbutton"
android:text="3" />
</TableRow>
<TableRow android:gravity="center" >
<Button android:id="@+id/pin_4"
style="@style/pinbutton"
android:text="4" />
<Button android:id="@+id/pin_5"
style="@style/pinbutton"
android:text="5" />
<Button android:id="@+id/pin_6"
style="@style/pinbutton"
android:text="6" />
</TableRow>
<TableRow android:gravity="center" >
<Button android:id="@+id/pin_7"
style="@style/pinbutton"
android:text="7" />
<Button android:id="@+id/pin_8"
style="@style/pinbutton"
android:text="8" />
<Button android:id="@+id/pin_9"
style="@style/pinbutton"
android:text="9" />
</TableRow>
<TableRow android:gravity="center" >
<Button android:id="@+id/pin_back"
style="@style/pinbutton"
android:text="‹" />
<Button android:id="@+id/pin_0"
style="@style/pinbutton"
android:text="0" />
<Button android:id="@+id/pin_ok"
style="@style/pinbutton"
android:text="OK" />
</TableRow>
</TableLayout>
</RelativeLayout>
アップデート:
サイズグループごとに異なるレイアウトを既に使用しており、dp と sp のみを使用しています。参考までに、一般論を書くことは控えてください。それでも問題は細部にあり、サイズビンは適切に選択されていません。