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 としなければならないようだ。