2014-10-12 2 views
0

LinearLayout 내부에서 동일한 이미지 소스를 사용하는 두 개의 ImageView가 있는데 왜 두 번째 이미지가 첫 번째 이미지보다 작습니까?LinearLayout에서 두 번째로 동일한 ImageView가 더 작은 이유는 무엇입니까?

<?xml version="1.0" encoding="utf-8"?> 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical"> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:gravity="center_vertical"> 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/background_landscape" /> 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/background_landscape" /> 

    </LinearLayout> 
</RelativeLayout> 

Screenshot ImageView with smaller image on the second image

오류는 800x1280 픽셀 해상도에 명확하게 재현 할 수 있습니다 :

는 소스 코드입니다.

두 이미지가 화면 오른쪽에 잘린 두 번째 이미지와 동일한 크기로 만드는 방법은 무엇입니까? (아래로 스케일링되지 않음)

+1

"왜 두 번째 이미지가 첫 번째 이미지보다 작습니까?" - 첫 번째와 같은 크기의 공간이없고 부모 컨테이너 안에 있어야합니다. "두 이미지를 화면의 오른쪽에 잘린 두 번째 이미지와 동일한 크기로 만들 수있는 방법"- 이미지를 직접 자르거나 이미지를 캔버스에 직접 그립니다. 또는 음의 여백을 사용하여 두 번째 이미지를 만듭니다. 'ImageView'는 컨테이너 LinearLayout의 경계를 넘어 확장됩니다. 후자의 기술은 내 실험을 기반으로 Android 4.0 이상에서만 작동하는 것으로 보입니다. – CommonsWare

+0

네, 설명을 이해 합니다만, 이미지를 자르면 코드가 복잡해질 것이라고 생각합니다. –

답변

1

... 왜 두 번째 이미지가 첫 번째 이미지보다 작습니까?

첫번째 이미지가 실제 layout_width 속성 인해 wrap_content 값을 얻을 수 있기 때문에. 그리고 두 번째 이미지는 너비가 인 (레이아웃 너비에서 첫 번째 이미지 너비까지) 인 LinearLayout을받습니다. 이는 이미지의 실제 너비보다 분명히 작습니다. 그것이 축소 된 이유입니다.

둘째 이미지 이 화면의 오른쪽에 잘린 채로 두 이미지의 크기가 같을 수 있습니다. (축소되지 않음)

어린이가 부모의 경계를 벗어날 수 있도록 ScrollView을 사용할 수 있습니다.

업데이트 : CommonsWare에서 언급 한 바와 같이 : beworker처럼

<HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:scrollbars="false" 
    > 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:gravity="center_vertical"> 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/background_landscape" /> 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/background_landscape" /> 

    </LinearLayout> 

</HorizontalScrollView> 
+1

'HorizontalScrollView'(이미지와 LinearLayout 방향이 주어져야 함)가 있어야하며 여기서는 스크롤링이 허용되는 동작이라고 가정합니다. – CommonsWare

+0

@beworker 그것은 나를 위해 작동합니다. 이것이 내가 원하는 것입니다. 그러나 핸드폰 그림이 없으면 HorizontalScrollView의 부모는 LinearLayout과 같은 표준 레이아웃이어야합니다. –

0

는 첫 번째 이미지 인해 wrap_content에 폭을 받고 두 번째 이미지가 남아있는 사용 가능한 수평 공간을 얻을 수있다. ImageViews에서 android:layout_weight="1"을 사용하십시오. 사용 가능한 화면 너비의 절반에 해당하는 각각의 원한다면

+1

질문은 두 번째 이미지가 자르기를 원하는 동작임을 구체적으로 설명합니다. 귀하의 솔루션은 그것을 달성하지 못할 것입니다. – CommonsWare

+0

예, @CommonsWare에서 말한 것처럼 layout_weight는 이미지의 크기를 줄이며 기본 무한한 배경 애니메이션으로 사용하기 때문에 크기를 줄이고 싶지 않습니다. –

+0

예 @ 커먼 스웨어 바로 나는 대각선 sry에 약간 질문을 읽었다. – forcewill

관련 문제