我正在构建一个应用程序,它从类似于股票 PIN 输入屏幕的 PIN 屏幕开始,问题是我无法让设计适用于所有类型的手机,为了简单起见,我们只讨论纵向模式(我会链接下面的布局xml):
- 在小屏幕设备上,我需要减小按钮的 dp 大小,这样它们就不会挂在屏幕边缘
- 在大型设备上,按钮更大,因此它们不会在屏幕中间聚集在一起
- 我需要支持一些旧的(2.3)设备,其中一个是 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,仅供参考,所以请不要写泛泛而谈。问题仍然在于更精细的细节,IMO 的尺寸箱选择得不好。