読者です 読者をやめる 読者になる 読者になる

騎空士ときどきプログラマーな日記

グラブルで頑張る騎空士の日常を綴ります。

【Android】ImageViewに画像をフィットさせようとしてハマった

久しぶりの更新。忘備録なのにそれ自体を忘れかけていた;;

ソースコード上で円形に切り取った画像をxmlで定義したImageViewに うまいことフィットさせるところでハマったので残しておく。

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

              <ImageView
                android:layout_width="50dp"
                android:layout_height="50dp"
                android:id="@+id/imageView_1"
                android:layout_gravity="center"
                android:src="@drawable/hogehoge"
                android:adjustViewBounds="true"
                android:scaleType="fitXY"/>

</RelativeLayout>

初めはこんな感じで定義されたレイアウトに描画したBitmapを割当。 確認したらY方向だけ領域内にフィットしてX方向は無視されてる。。。 android:adjustViewBounds="true" で縦横比を維持するように指定してるのになー

描画させてるソースコードがダメなのかと格闘すること1時間..... 頭ボカーンとなったので元に戻して再びレイアウトから考えることに。

android:scaleType="fitXY" ここに注目した。(と言うかもうここしか無い... 結果的に centerCrop としたら上手いこといった。

  • fitXY
    縦と横をそれぞれImageViewのサイズに合わせて拡大/縮小する
    縦横比を維持しない
    
  • centerCrop
    画像がImageViewいっぱいになるように拡大/縮小する
    ImageViewの高さまたは幅に合わせて縦横比を維持して拡大/縮小し、中央に表示
    

最終的にこんな感じ

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

              <ImageView
                android:layout_width="50dp"
                android:layout_height="50dp"
                android:id="@+id/imageView_1"
                android:layout_gravity="center"
                android:src="@drawable/hogehoge"
                android:adjustViewBounds="true"
                android:scaleType="centerCrop"/>

</RelativeLayout>

色々検証しないとわからないことが多そうだけど時間もないからとりあえずこの辺で...