2011-01-25 7 views
5

가로 또는 세로 이미지를 모두 저장할 수있는 ImageView를 구현하려고합니다. 이러한 이미지는 이미지 뷰의 너비 (가로 인 경우) 또는 높이 (세로 인 경우)에 맞아야하지만 여하 한 경우에도 여백 또는 패딩없이 뷰의 맨 위에 정렬해야합니다.Android ImageView ScaleType * FIT_TOP *

달성하고자하는 것은 android:scaleType="fitStart"이지만 인데, 세로 이미지의 경우에는이며, 가로 이미지의 경우에는 상단에 정렬됩니다.

추가 : 나는 작동하는 것 같다 이러한 추한 코드를 사용하고 있지만 확인이 최선의 해결책이다

이제

: 내 수업에서 다음

<com.custom.layout.MyImageView 
     android:id="@+id/detail_view_image" 
     android:src="@drawable/logo" 
     android:background="#fff" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_centerHorizontal="true" 
     android:cropToPadding="false" 
     android:adjustViewBounds="false" 
/> 

및 이미지 뷰를 확장 전 수행

@Override 
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
     int imgWidth = getDrawable().getIntrinsicWidth(); 
     int imgHeight = getDrawable().getIntrinsicHeight(); 

     if(imgWidth>imgHeight) 
      setScaleType(ScaleType.FIT_START); 
     else 
      setScaleType(ScaleType.FIT_CENTER); 

     int width = measureWidth(widthMeasureSpec); 
     int height = measureHeight(heightMeasureSpec);  

     setMeasuredDimension(width, height); 
    } 
+0

비슷한 것을 시도하고 있는데, 이것에 대한 해결책을 찾았습니까? –

+0

지금까지 행운을 빌지 않고, 위에 게시 한 코드를 사용하여 끝냈습니다 ... – 0m4r

+1

ok, 코드 주셔서 감사합니다! –

답변

2

대신 최우선 기본보기 당신은 단지 전화의 방향에 따라에서 onCreate()는 이미지 뷰의 scaleType을 변경하는 방법에 조각을 배치 할 수 있습니다 .

몇 가지 예를 조각 (나는 그냥 그런 식으로 작동하는지 모르지만 아이디어를 얻을 수 있습니다)에서 onCreate 방법, 을 : 그래서 다음에서 onCreate 다시

ImageView imgView = findViewById(R.id.myImage); 
//portrairt orientation 
if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { 
    imgView.setScaleType(ScaleType.FIT_CENTER); 
} else { //landscape orientation 
    imgView.setScaleType(ScaleType.FIT_START); 
} 

를 호출 할 것이다 방향 변경이 일어나는 경우 뷰의 스케일 유형을 변경하고 onConfigurationChanged()를 재정의하는 경우 위의 스 니펫을 원하는 위치에 다시 추가해야합니다. 시도해보고 작동 여부를 알려주십시오.

+0

확인 하시겠습니까? 토론? – 10s

관련 문제