1

Supporting Multiple Screensの Android ドキュメント ページを読んでいたところ、次のように記載されていました。

「デフォルトでは、Android はビットマップ ドローアブル (.png、.jpg、および .gif ファイル) と Nine-Patch ドローアブル (.9.png ファイル) をスケーリングして、各デバイスで適切な物理サイズでレンダリングします。」


「システムは、必要に応じて、現在の画面密度に基づいて、ドローアブル リソースを適切なサイズにスケーリングします。」

最近、アプリケーションにタブレット機能を追加しています。横向きモード (縦向きの場合も同様ですが、例として横向きを使用します) では、画面の左側にテキストがあり、右側にボタンがある画像があります。単純。この XML レイアウトを開発すると、私の 10 インチ タブレットでアプリケーションを実行したときに期待される内容を示す次のイメージが (Eclipse の XML エディターのグラフィカル レイアウト部分に) 表示されます。

私が期待するもの。

しかし、Acer Iconia A200 でアプリケーションを実行すると、次のようなスクリーンショットが表示されます。

私が最終的に見るもの。

実際、2 番目のスクリーンショットに表示される「画像」は、Android 2.2 MyTouch フォンで表示される画像のサイズと、完全に同じではないにしても、ほぼ同じに見えます。

したがって、私の質問は、XML エディタのグラフィカル レイアウトに表示されるように、なぜ Android が画像のサイズを変更しないのかということです (最初のスクリーンショットのように)。

私が試したこと:

  • 適切にスケーリングされた描画可能な画像を各drawable-_ _ _ _フォルダーに追加しました。それでも、イメージは同じように見えました。
  • より高解像度のタブレット用にスケールアップすることを期待して、画像をldpiだけに追加しましたが、そうではありませんでした。
  • 現在、フォルダーにその単一の画像がありdrawableます(拡張子なし)。それでも、同じ動作が続きます。

助言がありますか?


編集:

コード:

<LinearLayout
    android:id="@+id/leftLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/ImageViewLogo"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="4dp"
        android:layout_marginTop="10dp"
        android:background="@android:color/transparent"
        android:contentDescription="@+string/logo"
        android:scaleType="fitCenter"
        android:src="@drawable/logo_red" />

    <RelativeLayout
        android:id="@+id/layoutBelowImage"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_marginBottom="20dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:gravity="center" >

        ... 4 TextViews here...

    </RelativeLayout>
</LinearLayout>
4

1 に答える 1

1

のfit のいずれかを使用scaleTypeしますImageView。この場合fitCenter、縦横比を維持するために使用することができます。

エミュレーターと実際のデバイスの間にはまだいくつかの不一致があります。

(with )wrap_contentのアスペクト比を維持したまま使用しないようにするには、いくつかのことを試すことができます。ImageViewfitCenter

  • に設定しfill_parentます。a で重みを使用しますLinearLayout(ネストされた重みを避けることをお勧めしますが、重要ではありません)。
  • に設定しfill_parentます。とを使い分けてlayout_aboveくださいlayout_below
  • ImageViewで正しい縦横比を拡張して設定するカスタム ビューを作成しますOnMeasured
  • 固定の幅と高さ dp を設定します (最も簡単です)。
于 2012-07-18T12:30:31.030 に答える