独立したユニットdpの問題を示す単純なtableLayoutがあります。
私の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 はレイアウト マージンであまり独立していないことがわかります。
Samsung Nexus のスクリーンショット (適切なスケール):
LG Optimus GT 540 のスクリーンショット (悪いスケール):
私は StackOverflow で同様のスレッドを探しており、可能な解決策は、どの画面でも正しいスケールにすることです。
マージンとパディングはまったく使用しませんが、常に tableLayout を使用し、いくつかの重みを付けて moc ビューを追加して、ビュー間にスペースを追加します (xml レイアウトの汚染のために良くありません。とにかく、有望に見えます)。
独立したユニットを独自に計算し、プログラムですべてを再スケーリングします(すべてxmlにあるため、私には適していません)
さまざまな画面にさまざまなレイアウトを使用します(ビューごとにレイアウトを再作成してそれらをサポートするのが面倒なので、良くありません)
質問:
同じレイアウトを使用するすべての画面のレイアウトのスケーリングに関する問題を解決するにはどうすればよいですか?
画面でマージンを正しく機能させるにはどうすればよいですか?
私の 2 つのソリューションについてどう思いますか。これは良い習慣ですか?(特に最初のもの)?
ありがとう