2011年10月7日金曜日

[AndroidSDK]ImageViewがうまく動かない

追記
注意:この方法では複数デバイスに対応出来ない。


結論から言うと
横幅がを合わせたいときは
android:adjustViewBounds="true"
を使用する。





ここから先は過去の記事です

ImageViewの拡大がうまく行かないとき
縦横比がおかしくなる、または空白ができる


画像を画面に合わせて縦横比維持で拡大縮小したいとき

<ImageView
    android:src="@drawable/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    <!--デフォルト値がfitCenterなので記載しなくてもいい-->
    android:scaleType="fitCenter" 
/>

とするとfitCenterなので画面に合わせて縦横比合わせて拡大縮小されるはずなのだが
なぜか表示がおかしくなる

具合的には、画像そのものは拡大縮小されるのだが
ImageViewの縦サイズは元画像のままで空白ができてしまう



青背景のandorid君の画像を2枚貼りつけた時
マージンなしでぴったりつけているのに、こんな感じの空白ができる

これを回避するために

<ImageView
    android:background="@drawable/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    <!--デフォルト値がfitCenterなので記載しなくてもいい-->
    android:scaleType="fitCenter" 
/>


とするとうまくいく
なぜだろう?

これを知らないがために変なクラスやメソッド作ってしまった




参考までに

Android/ImageView - tech.cm55.com
http://tech.cm55.com/wiki/Android/ImageView

fchiba's memo [Android]ImageViewの表示サイズの決まり方(リライト)
http://fchiba.blog114.fc2.com/blog-entry-40.html

BitmapからDrawableに変換してBackgroundに格納する
imageView.setBackgroundDrawable(new BitmapDrawable(bitmap));