1

これは私のコードです:

<TextView
    android:id="@+id/timer"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="right"
    android:layout_marginTop="50dp"
    android:textColor="#873670" />

<TextView
    android:id="@+id/questionList"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:textColor="#110987" />

    <RadioGroup
        android:id="@+id/rgAns"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <RadioButton
            android:id="@+id/rbOpt1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:clickable="true"
            android:onClick="usrAnsrChoice" />

        <RadioButton
            android:id="@+id/rbOpt2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:clickable="true"
            android:onClick="usrAnsrChoice" />

        <RadioButton
            android:id="@+id/rbOpt3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:clickable="true"
            android:onClick="usrAnsrChoice" />
    </RadioGroup>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginRight="40dp"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/prevQstn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/quizPrvBtnLbl" />

    <Button
        android:id="@+id/endTest"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/quizEndTstBtnLbl" />

    <Button
        android:id="@+id/nextQstn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/quizNxtBtnLbl" />

    <TextView
        android:id="@+id/inc"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:layout_marginTop="100dp"
        android:textColor="#ffffff" />

</LinearLayout>

この画面を 4 インチ、5 インチ、および 2 インチの画面に合わせて自動的に調整する必要があります。また、mdpi および ldpi の画面を完全にサポートし、7 インチの画面でも 4 インチの画面と同じように表示されるようにしたいと考えています。これらの画面サイズと密度をサポートするには、XML にどのような変更を加える必要がありますか?

現在、私のレイアウトは小さな画面では問題なく見えますが、大きな画面ではそれほどではありません。また、画像が引き伸ばされたり、テキストがずれたりしたくありません。

4

3 に答える 3

5

いくつかの異なるタイプの画面でうまく機能するレイアウトを設計するには、画面サイズごとにレイアウトファイルを作成する必要があります。これを行う古い方法は、ダニーが彼の答えで概説したものと似ていますが、完全には正確ではありません。複数の画面サイズをサポートする古い方法は次のとおりです。

レイアウト-xlarge:xlarge画面は少なくとも960dp x 720dp
レイアウト-large :大画面は少なくとも640dp x 480dp
レイアウト-通常:通常画面は少なくとも470dp x 320dp
レイアウト-small :小画面は少なくとも426dp x 320dp

さまざまな画面サイズのレイアウトを定義するこの方法は引き続きサポートされていますが、この方法を最小画面幅をターゲットにすることで置き換えることをお勧めします。一般的なサイズの「バケット」ではなく画面幅をターゲットにする理由は、画面が実際にどのバケットに収まるかを判断するときにあいまいであり、間違ったバケットを報告しているデバイスがいくつかあったためです。画面幅をターゲットにすることで、デバイスが誤ってサイズを報告することはなくなりました。

画面幅のフォルダは次のように設定されます。

layout-sw320dp:320dp->一般的な電話画面(240x320 ldpi、320x480 mdpi、480x800 hdpiなど)。
layout-sw480dp:480dp-> Dell Streak(480x800 mdpi)のようなトゥイナータブレット。
layout-sw600dp:600dp-> 7 "タブレット(600x1024 mdpi)。layout
-sw720dp:720dp-> 10"タブレット(720x1280 mdpi、800x1280 mdpiなど)。

ドローアブルリソースの場合、画面サイズをターゲットにするのではなく、画面密度をターゲットにする必要があります。mdpiこれに関する基本的な考え方は、密度バケットを対象とするすべてのリソースを作成し、さまざまな密度に合わせてドローアブルをスケーリングすることです。したがって、この場合、画像リソース用に次の描画可能なフォルダがあります。

drawable-ldpi:低密度スクリーンdrawable
-mdpi:通常または中密度スクリーン
drawable-hdpi:高密度スクリーン
drawable-xhdpi:超高密度スクリーン

より良い説明はAndroidDeveloperReferenceにあり、ここから抜粋しています(密度バケット名は私が追加しました):

代替ドローアブル

ほとんどすべてのアプリケーションにはランチャーアイコンがあり、そのアイコンはすべての画面密度で見栄えがよいため、ほとんどすべてのアプリケーションには、さまざまな画面密度に対応する代替の描画可能なリソースが必要です。同様に、アプリケーションに他のビットマップドローアブル(アプリケーションのメニューアイコンや他のグラフィックスなど)を含める場合は、密度の異なる代替バージョンまたはそれぞれを提供する必要があります。

注:必要なのは、ビットマップファイル(、、、または)およびナインパスファイル()の密度固有の.pngドローアブル.jpgのみ.gifです.9.png。XMLファイルを使用して形状、色、またはその他の描画可能なリソースを定義する場合は、デフォルトの描画可能なディレクトリ(drawable/)に1つのコピーを配置する必要があります。

異なる密度の代替ビットマップドローアブルを作成するには、4つの一般化された密度間の3:4:6:8のスケーリング比に従う必要があります。たとえば、中密度画面(ランチャーアイコンのサイズ)用に48x48ピクセルのビットマップドローアブルがある場合、すべての異なるサイズは次のようになります。

  • 低密度(ldpi)の場合は36x36
  • 中密度(mdpi)の場合は48x48
  • 高密度(hdpi)の場合は72x72
  • 超高密度(xhdpi)の場合は96x96

アイコンのデザインの詳細については、アイコンデザインガイドラインを参照してください。このガイドラインには、ランチャーアイコン、メニューアイコン、ステータスバーアイコン、タブアイコンなど、さまざまなビットマップドローアブルのサイズ情報が含まれています。

複数の画面サイズを効果的にサポートするための完全なリファレンスは、Androidデベロッパーサイトにあります。

于 2013-03-18T20:51:57.447 に答える
0

RelativeLayout をルート ビューとして使用する必要があります。次に、上、下などのように UI 要素間の関係を指定できます。RelativeLayout を使用すると、複数のディスプレイの設計がはるかに簡単になります。

于 2013-03-01T09:51:42.887 に答える
-3

良いUIできれいにレイアウトをデザインする。フォルダを作成しますdrawable

1. layout-large for the hdpi devices like google nexus
2. layout-xlarge for the xhdpi devices like touchpads
3. layout-small for the small devices less than medium devices

そして、レイアウトに基づいてフォントサイズを設定したいフィールドと要素を揃えます。良いUIを表示する。

于 2013-03-01T10:07:26.273 に答える