1

独立したユニット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 つのソリューションについてどう思いますか。これは良い習慣ですか?(特に最初のもの)?

ありがとう

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 に答える