2010-11-24 2 views
20

다음과 같이 정의 된 ImageView가 있습니다.상위 높이를 채우고 가능한 한 큰 이미지를 표시하는 ImageView를 만드는 방법은 무엇입니까?

 <ImageView 
    android:id="@+id/cover_view" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_below="@id/title" 
    android:layout_above="@id/divider" 
    android:adjustViewBounds="true" 
    android:src="@drawable/image_placeholder" 
    android:scaleType="fitStart"/> 

이제 새로운 비트 맵을 다운로드 한 후 드로어 블을 변경합니다. 이미지가 ImageView의 왼쪽 상단에 나타납니다. 가능한 전체 높이를 이미지로 채우고 비율을 변경하지 않고 이미지의 크기를 조정할 수 있도록보기의 너비를 조정하는 방법이 있습니까?

이미지가 표준 화면의 모든 공간을 채우지 만 WVGA 해상도에서는 이미지의 실제 높이의 절반 정도만 차지합니다.

답변

1

에 호출을 통해 fitXY로 규모의 유형을 변경할 수 있습니다. 해결책은 귀하의 필요에 맞는 Matrix을 작성하고 ImageViewsetImageMatrix(matrix)으로 전화하는 것입니다.

8

당신은 기본적으로 여기에 대답은 당신이 달성하려고하는 것에 대해 미리 정의 된 값이 없다는 것입니다

imageView.setScaleType(ScaleType.FIT_XY); 
+12

처럼 XML로 그것을 할. – mreichelt

36

정확하게 이해한다면 centerCrop scaleType을 사용해야합니다. fitStart은 이미지의 크기를 비례 적으로 조정하지만 너비와 높이 모두 뷰의 크기를 초과하지 않으며 이미지는 앞에서와 마찬가지로 top|left의 중력을가집니다.

centerCrop을 사용하면 이미지의 크기가 비례하여 조정되지만 이미지의 가장 짧은 가장자리가보기의 크기와 일치하게되고, 긴쪽에 맞지 않는 추가 데이터가 있으면 간단히 잘라냅니다. 중력은 물론 center입니다. 아래는 나를 위해 일한 :

<ImageView 
     android:src="@drawable/image_placeholder" 
     android:id="@+id/cover_view" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:scaleType="centerCrop" 
/> 
3

단순히 ScaleType가 야누 피하기 위해 시도하는 것입니다 가로 세로 비율을 변경 않는

android:scaleType="fitXY" 
관련 문제