ピカソで画像を全幅と固定高にサイズ変更


164

ImageViewピカソを使用して読み込まれたアイテムの1つである垂直のLinearLayoutがあります。画像の幅をデバイス全体の幅まで上げ、画像の中央部分を固定された高さ(150dp)でトリミングして表示する必要があります。私は現在次のコードを持っています:

Picasso.with(getActivity()) 
    .load(imageUrl) 
    .placeholder(R.drawable.placeholder) 
    .error(R.drawable.error) 
    .resize(screenWidth, imageHeight)
    .centerInside() 
    .into(imageView);

私はどちらの値をに入れなければならないscreenWidthimageHeight(= 150DP型)?

回答:


486

あなたは探している:

.fit().centerCrop()

これらの意味:

  • fit- ImageViewが測定されるまで待ち、画像のサイズを正確に一致するようにサイズ変更します。
  • centerCrop-サイズいっぱいになるまで、アスペクト比を尊重して画像を拡大縮小します。サイズが正確に一致するように、上下または左右のいずれかをトリミングします。

5
imageViewの高さはどのくらいにする必要がありますか?imageViewの高さを固定したくありません。画像の高さに応じて変化します。
チェトナ2017年

4
.fit().centerInside()使用するだけ.centerInside()Center inside requires calling resize with positive width and height.エラーメッセージが表示されてクラッシュした私にとってはうまくいきました。
ロックリー

@ロックリー、サイズを変更する必要があります: '.load(url).resize(targetWidth、targetHeight)' .........
FRK

8
.fit().centerCrop()または機能し.fit().centerInside()ていません。画像がに読み込まれていませんimageView.fit()画像なしは正常に読み込まれています。.resize()どちらも使用していません。
ニシャントバクタ2017年

どの側面からもトリミングせずにアスペクトを維持したままサイズを変更する方法
Rohit Sharma '22

1

場合によっては、fit()が役に立たないことがあります。幅と高さの測定が終了するまで待つ必要があります。したがって、globallayoutlistenerを使用できます。例えば;

imageView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
            public void onGlobalLayout() {
                Picasso.with(getActivity())
                        .load(imageUrl)
                        .placeholder(R.drawable.placeholder)
                        .error(R.drawable.error)
                        .resize(screenWidth, imageHeight)
                        .fit
                        .centerInside()
                        .into(imageView);
                imageView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
            }
        });
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.