我有简单的 tableLayout,它显示了独立单元 dp 的问题。
我想在我的layout_margin属性中使用 dp 单元 - 布局将在任何设备上毫无问题地调整大小。
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:gravity="center"
android:layout_margin="40dp"
>
<TableRow android:layout_width="fill_parent" android:layout_height="wrap_content">
<TextView
android:text="@string/start_login_username"
android:id="@+id/start_login_username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<EditText
android:id="@+id/start_login_EditTxt1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textEmailAddress"
/>
</TableRow>
<TableRow android:layout_width="fill_parent" android:layout_height="wrap_content">
<TextView
android:text="@string/start_login_password"
android:id="@+id/start_login_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
<EditText
android:id="@+id/start_login_EditTxt2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPassword"
/>
</TableRow>
<TableRow android:layout_width="fill_parent" android:layout_height="wrap_content">
<Button android:text="@string/start_login_cancel"
android:id="@+id/start_login_cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
</Button>
<Button
android:text="@string/start_login_login"
android:id="@+id/start_login_ButtonLogin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
</Button>
</TableRow>
</TableLayout>
但是,测试这个布局,我们可以看到 dp 在布局边距中并不是那么独立。
这是三星 Nexus 中的屏幕截图(良好的比例):
这里是 LG Optimus GT 540 的截图(坏比例):
我在 StackOverflow 中寻找类似的线程,以及可能的解决方案,在任何屏幕上都有正确的比例是:
根本不使用边距和填充,而是始终使用 tableLayout 并添加一些权重的 moc 视图,以在视图之间添加空间(由于 xml 布局的污染而不好。无论如何,它看起来很有希望)。
自己计算独立单位,并以编程方式重新调整所有单位(对我不利,因为我都在 xml 中)
为不同的屏幕使用不同的布局(不好,因为我懒得为每个视图重新创建布局并支持它们)
问题:
如何解决使用相同布局为所有屏幕缩放布局的问题?
如何使边距在我的屏幕上正常工作?
您对我的两个解决方案有何看法。这是好习惯吗?(特别是第一个)?
谢谢