web-dev-qa-db-ja.com

ImageView in Android layout_height = "wrap_content"を使用したXMLレイアウトには上下にパディングがあります

ImageViewと他のいくつかのレイアウトとビューを含む垂直LinearLayoutがあります。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:orientation="vertical"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent">

    <ImageView
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:contentDescription="@string/banner_alt"
        Android:src="@drawable/banner_portrait" />

    <TextView
      Android:layout_width="match_parent"
      Android:layout_height="wrap_content"
      Android:text="@string/main_search"
      Android:gravity="center"
      Android:textStyle="bold" />

    <LinearLayout
      Android:orientation="horizontal"
      Android:layout_width="match_parent"
      Android:layout_height="wrap_content" >

      <Spinner
        Android:id="@+id/search_city_spinner"
        Android:layout_width="0px"
        Android:layout_height="wrap_content"
        Android:layout_weight="1"
        Android:Prompt="@string/search_city_Prompt"
        Android:entries="@array/search_city_array" />

      <Spinner
        Android:id="@+id/search_area_spinner"
        Android:layout_width="0px"
        Android:layout_height="wrap_content"
        Android:layout_weight="1"
        Android:Prompt="@string/search_area_Prompt"
        Android:entries="@array/search_area_array" />

    </LinearLayout>

    <LinearLayout
      Android:orientation="horizontal"
      Android:layout_width="match_parent"
      Android:layout_height="wrap_content" >

      <Spinner
        Android:id="@+id/search_rooms_spinner"
        Android:layout_width="0px"
        Android:layout_height="wrap_content"
        Android:layout_weight="1"
        Android:Prompt="@string/search_rooms_Prompt"
        Android:entries="@array/search_rooms_array" />

      <Spinner
        Android:id="@+id/search_min_spinner"
        Android:layout_width="0px"
        Android:layout_height="wrap_content"
        Android:layout_weight="1"
        Android:Prompt="@string/search_min_Prompt"
        Android:entries="@array/search_min_array" />

      <Spinner
        Android:id="@+id/search_max_spinner"
        Android:layout_width="0px"
        Android:layout_height="wrap_content"
        Android:layout_weight="1"
        Android:Prompt="@string/search_max_Prompt"
        Android:entries="@array/search_max_array" />

    </LinearLayout>

    <Button
      Android:id="@+id/saearch_button"
      Android:layout_width="match_parent"
      Android:layout_height="wrap_content"
      Android:text="@string/search_button"
      Android:onClick="searchButton" />

</LinearLayout>

私の問題は、アクティビティが表示されると、ImageViewの上下にパディングが表示されることです。 ImageViewであることを確認しました(ImageViewに背景色を設定することにより)。

画像は450x450pxです。高さを手動で450pxに設定すると、目的の効果(パディングなし)が生成され、450dpに設定すると、wrap_contentを使用した場合と同じ効果が得られます。

Androidは画像の高さ(450px)を取得し、ImageViewの高さをdpで同じ値に設定しているようです。

これを修正するために私ができることについてのアイデアはありますか?画面密度に応じて異なる画像を提供するため、絶対値を使用したくありません。

51
gsteinert

似たような問題があり、ImageViewでAndroid:adjustViewBounds="true"を使用して解決しました。

<ImageView
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:adjustViewBounds="true"
    Android:contentDescription="@string/banner_alt"
    Android:src="@drawable/banner_portrait" />
132