taoru's memo

Objective-c,cocos2d,など開発についてのメモ(andoroidも少しだけ)

AndroidのImageViewで、縦横比を維持しつつ拡大するときにハマった(5/10追記)

ImageViewをxml内に記述するとき、縦横比を維持するために

<ImageView
      android:layout_width="match_parent"
      android:layout_height="135dp"
      android:adjustViewBounds="true"
      android:background="@drawable/hoge" />

としていたが、縦横比が固定されずに横長になってしまう。
adjustViewBounds してるのに…と思っていたが、リソースの指定方法を勘違いしていた。

backgroundはViewの背景であって、
ImageViewのリソースはsrcで指定しなければならなかった。

正しくは、

<ImageView
      android:layout_width="match_parent"
      android:layout_height="135dp"
      android:adjustViewBounds="true"
      android:src="@drawable/hoge" />

これで縦横比が保たれたまま、縦が135dpにフィットするように拡大された画像が表示される。

もし一緒にbackgroundも指定すると、
View目一杯に拡大された画像の上に、srcで指定した画像が表示される。


恥ずかしい勘違いでした。


  • 追記 2012/05/10

横画面の場合、面倒な事にScaleTypeの縦横の扱いが逆転しない。
scaleType = CenterCrop だと、横幅いっぱいまで拡大して中央表示だが、

横画面にした場合、縦横を自動で逆転させてくれない。
横画面で同じ効果にしたい場合、
scaleType = FitCenter としなければならないようだ。

QLOOKアクセス解析