0
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@color/gray"
        android:orientation="vertical" > 

        <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@color/darkgray"
        android:gravity="center"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/attenders"
            android:layout_width="110dp"
            android:layout_height="40dp"
            android:layout_gravity="center"
        android:background="@color/gray"
        android:layout_marginRight="8dp"
        android:text="Attenders" />

    <Button
        android:id="@+id/send"
        android:layout_width="110dp"
        android:layout_height="40dp"
        android:layout_marginLeft="8dp"
        android:layout_gravity="center"
        android:background="@color/gray"
        android:text="Send IM" />
    </LinearLayout>
</LinearLayout>

これは私のコードですが、すべての画面解像度で dp が正常に動作していません。提案plz、plz私が何か間違っているかどうか教えてください

4

2 に答える 2

6

問題は、ボタンの高さまたは幅を設定するためにdpを使用すると、すべての解像度に適合しないことです。つまり、小さな画面では大きく見え、大きな画面では小さく見えますが、高さを設定するためにdpを使用すると、画面解像度に応じて自動的に変換/調整されるコンポーネントの幅

このことから私が理解しているのは、 (または、または)dpの代わりに使用すると魔法のように機能し、そのデバイスの密度 (ppi) に関係なく、すべてのデバイスで物理サイズがすべて同じになると考えたことです。pxincm

そうではありません。

ここで説明されている dp または dip は、

画面の物理密度に基づく抽象的な単位。これらの単位は、160 dpi (インチあたりのドット数) の画面を基準にしており、1 dp はほぼ 1 ピクセルに相当します。

より多くの dpi を持つ画面 (密度が高く、より多くのピクセルが画面の正方形の領域に詰め込まれていることを意味します) は、同じ、たとえば 100x100 dp の画像を描画するようにタスクされた場合、160 dpi の画面と比較して、物理的に小さい画像を基本的に描画します。

より高密度の画面で実行する場合、1 dp の描画に使用されるピクセル数は、画面の dpi に適した倍率で拡大されます。

解決

アプリをさまざまな画面サイズで比例的に同じように見せる簡単な方法が 2 つあります。

1 つ目は、異なるレイアウト フォルダー (layout-ldpi、layout-mdpi など) を使用することです。この手法については、こちらで詳しく説明されています。より推奨される方法はstyle、密度ごとに異なる値を使用することです。これにより、1 つのlayoutフォルダーを保持し、代わりにスタイルを参照して測定することができます。これは同じ手法を使用して行うことができますが、代わりに values-ldpi、values-mdpi などを使用します。これは、画面サイズ全体で標準サイズの UI 要素を使用する場合に役立ちます。

もう 1 つの方法はweights、レイアウト全体で使用することです。密度の画面サイズに関係なく、ウェイトは自動的に調整されます。これは、たとえば、幅が異なる 3 つの列が必要な場合に非常に役立ちます。重みを使用して、列 A が画面の使用可能な幅の 40% を占める必要があり、B と C が占める必要があることをレイアウトに簡単に伝えることができます。それぞれ30%。これは、画面サイズ全体で標準レイアウトを使用する場合に便利です。

見栄えがよく、適切にコード化されたアプリは、両方を実装します。

于 2013-10-01T12:33:37.777 に答える