1

Android アプリを更新していて、考えられるすべての画面サイズ (レイアウト小、レイアウト大など) のレイアウトを作成したことに気付きました。変化する。すべての画面サイズをサポートする単一の XML ファイルを作成しようとしています。Android のドキュメントと stackoverflow に関するその他の質問を確認した後、レイアウト内の各アイテムに weightSum と layout_weight を指定できるため、LinearLayout が最適な選択であると思われます。これは期待どおりに機能しません (以下のコードと画像を参照)。私はこれを正しくやっていますか?考えられるすべての画面サイズに対して RelativeLayout の作成に戻る必要がありますか?

私の画像は単一の描画可能なフォルダーであり、私のレイアウトは単一のレイアウト フォルダーにあります。

XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/bg"
    android:gravity="center"
    android:orientation="vertical"
    android:weightSum="100" >

    <ImageButton
        android:id="@+id/btn1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:adjustViewBounds="true"
        android:scaleType="fitCenter"
        android:src="@drawable/image0"
        android:background="@null"
        android:layout_weight="30" />

    <ImageButton
        android:id="@+id/btn2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:adjustViewBounds="true"  
        android:scaleType="fitCenter"
        android:src="@drawable/image1"
        android:background="@null"
        android:layout_weight="30" />

    <ImageButton
        android:id="@+id/key"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="30"
        android:background="@null"
        android:src="@drawable/image0_key" />

    <TextView
        android:id="@+id/tvScore"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:text="Score: 0"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:layout_weight="10"
        android:layout_gravity="left" />

</LinearLayout>

結果のビュー (項目のオーバーフローと画面サイズのレイアウトが一致しない)

ネクサス ワン:

ここに画像の説明を入力

タブレット:

ここに画像の説明を入力

編集:次の drawable-____ フォルダーを追加しました。同じ結果が得られます。

ここに画像の説明を入力

4

6 に答える 6

2

互換性レイアウト フォルダーの作成を検討することをお勧めします。:)

ここに画像の説明を入力

于 2013-11-01T06:58:58.660 に答える
0
DisplayMetric dm =new DisplayMetric();

getWindowManager().getDefaultDisplay().getMetrics(dm);
int h= dm.heightPixels;
int w= dm.widthPixels;
h=h/10; // 10 is for example for 10% of display height
w=((w*20)/100); // 20%of display width
LinearLayout.LayoutParams params= new LinearLayout.LayoutParams(w,h);
YourObject.setLayoutParams(params);

//(YourObject) は、ボタン、画像ボタン、テキストビューなど、すべての可能性があります...

于 2015-09-06T08:05:36.353 に答える