1

我有简单的 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 中的屏幕截图(良好的比例):

三星Galaxy

这里是 LG Optimus GT 540 的截图(坏比例):

在此处输入图像描述

我在 StackOverflow 中寻找类似的线程,以及可能的解决方案,在任何屏幕上都有正确的比例是:

  • 根本不使用边距和填充,而是始终使用 tableLayout 并添加一些权重的 moc 视图,以在视图之间添加空间(由于 xml 布局的污染而不好。无论如何,它看起来很有希望)。

  • 自己计算独立单位,并以编程方式重新调整所有单位(对我不利,因为我都在 xml 中)

  • 为不同的屏幕使用不同的布局(不好,因为我懒得为每个视图重新创建布局并支持它们)

问题:

如何解决使用相同布局为所有屏幕缩放布局的问题?

如何使边距在我的屏幕上正常工作?

您对我的两个解决方案有何看法。这是好习惯吗?(特别是第一个)?

谢谢

4

1 回答 1

0

简单的使用带有权重属性的linearlayout,如果是要自动调整的宽度,记得设置width="0dp"。

你的 xml 应该是这样的:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:layout_gravity="center" 
    android:orientation="horizontal"  >

    <TextView
        android:text="Your name"
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="wrap_content" />

    <EditText
        android:layout_weight="1"
        android:layout_width="0dp"
        android:minWidth="80dp"
        android:layout_height="wrap_content" />
</LinearLayout>
于 2012-07-13T09:02:33.613 回答