3

ImageView 요소를 프로그래밍 방식으로 가로형 선형 레이아웃에 추가하고 있습니다. 그런 다음 ImageView 리소스 중 하나에서 scaleX 및 scaleY 속성을 "2"로 설정합니다. 이미지의 크기가 올바르게 조정되지만 이미지가 겹치지 않고 다른 ImageView 요소가 이동하지는 않습니다. 다른 이미지와 겹치는 이미지가 마음에 들지 않습니다. 어떻게 해결할 수 있습니까?크기 조정시 이미지가 다른 이미지와 겹치다

int resources[] = {R.drawable.desert, R.drawable.koala, R.drawable.jellyfish, 
         R.drawable.lighthouse, R.drawable.desert}; 

    for(int i=0; i<5; i++) { 
     ImageView logo = new ImageView(this); 
     logo.setLayoutParams(new LinearLayout.LayoutParams(100, 75)); 
     logo.setImageResource(resources[i]); 
     logosContainer.addView(logo); 
    } 

    ImageView middleImage = (ImageView) logosContainer.getChildAt(2); 
    middleImage.setScaleX(middleImage.getScaleX() * 2); 
    middleImage.setScaleY(middleImage.getScaleY() * 2); 

코드의 결과는 다음과 같습니다 : 당신은 축소 이미지가 다른 이미지와 겹치는 것을 분명히 알 수 있습니다 http://imageshack.us/a/img15/2811/scaleal.jpg

여기 내 코드입니다.

답변

0

귀하의 ImageViews는 이미 측정되고 루프를 빠져 나갈 때 컨테이너에 배치됩니다. 이 작업을 수행하기 위해 레이아웃을 새로 고침 (tricky)해야하며 종종 "모든보기를 제거하고 다시 추가"로 연결됩니다. 그렇다면 왜 루프에서 "스케일링"을하지 않습니까?

for(int i=0; i<5; i++) { 
    ImageView logo = new ImageView(this); 
    if(i==middleImageIndex){ 
     logo.setLayoutParams(new LinearLayout.LayoutParams(100*2, 75*2,1)); 
    } else { 
     logo.setLayoutParams(new LinearLayout.LayoutParams(100, 75,1)); 
    } 
    logo.setImageResource(resources[i]); 
    logosContainer.addView(logo); 
} 

마지막 매개 변수 (100,75가, 1가) 각 이미지 뷰가 동등하게 중요하고 중복되지 않는 것을 확인합니다 뷰의 weight입니다.

또 다른 참고 : 인 setScale 당신의 도움에 감사하는 lot of users out there

+0

안녕하세요 크리스를 줄일 수 API 레벨 11 이상이 필요합니다,하지만 난 이미지가 컨테이너에 배치 된 후 스케일링을 설정해야합니다. 선택한 이미지의 애니메이션을 애니메이션으로 적용 할 터치 이벤트를 추가 할 것입니다. – user1718159