Picasso를 사용하여 이미지를 전체 너비 및 고정 높이로 크기 조정


164

항목 중 하나가 ImageViewPicasso를 사용하여로드 되는 세로 LinearLayout이 있습니다 . 이미지의 너비를 전체 장치 너비로 올리고 이미지의 중앙 부분을 고정 된 높이 (150dp)로 표시해야합니다. 현재 다음 코드가 있습니다.

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

어떤 값을 입력 screenWidth하고 imageHeight(= 150dp)?

답변:


486

당신이 찾고있는:

.fit().centerCrop()

이것이 의미하는 바 :

  • fit- ImageView측정이 끝날 때까지 기다렸다가 크기와 정확히 일치하도록 이미지 크기를 조정하십시오.
  • centerCrop-이미지가 크기를 채울 때까지 가로 세로 비율에 맞게 이미지의 크기를 조정하십시오. 크기가 정확히 일치하도록 위쪽과 아래쪽 또는 왼쪽과 오른쪽을 자릅니다.

5
imageView의 높이는 얼마입니까? 내 imageView의 고정 높이를 원하지 않습니다. 이미지의 높이에 따라 달라집니다.
Chetna

4
.fit().centerInside()사용하는 .centerInside()것이 Center inside requires calling resize with positive width and height.오류 메시지 와 충돌하는 곳에서 나를 위해 일했습니다 .
Rock Lee

@ 락 리, 당신은 크기를 조정해야합니다 : '.load (url) .resize (targetWidth, targetHeight)'.........
FRK

8
.fit().centerCrop()또는 .fit().centerInside()작동하지 않습니다. 에 이미지가로드되지 않습니다 imageView. .fit()이미지가 없으면 잘로드됩니다. .resize()두 경우 모두 사용하지 않습니다 .
Nishant Bhakta

측면에서 자르지 않고 크기를 조정하고 측면을 유지하는 방법
Rohit Sharma

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.