2011-11-28 13 views
2

나는 다음과 같은 레이아웃이 : 그것은 수직 특성에 관해서있는 LinearLayout 부모로 슈퍼 부모를 사용

<LinearLayout width:fill height:fill > 
    <RelativeLayout width:fill height:wrap > 
    <ImageView width:fill height:wrap > 
    <LinearLayout width:wrap height:wrap /> 
    </RelativeLayout> 
</LinearLayout> 

가장 안쪽의 LinearLayout이는 RelativeLayout의 내부에 아무 생각이없는 것입니다. 중력은 수평으로 만 작용합니다. 모든 의도와 목적 (수직 방향)에서, 내부 LinearLayout은 바깥 쪽 LinearLayout이 부모임을 고려합니다. 부모를 위/아래로 정렬하면 바깥 쪽 LinearLayout을 채우기 위해 RelativeLayout이 펼쳐집니다.

궁극적으로 여기서 원하는 것은 상대적인 레이아웃 높이가 이미지 뷰를 마치 배경처럼 감싸는 것입니다 (배경 위에 다른 뷰 위에 오버레이가 있어야 함). 선형 레이아웃 상대적 레이아웃의 제약 속에서 간단하게 작업 할 수 있습니다.

또한 이미지 뷰를 래핑하는 상대 레이아웃의 경계를 벗어나는 내용을 잘라낼 수 있기를 원합니다. 내 최고의 옵션은 무엇입니까?

답변

2

여기에 귀하의 문제는 wrap_content은 (적어도 부모님이) View의 상한을 제한하지 않는다고 생각합니다. 따라서 RelativeLayout의 신장은 부모의 전체 크기까지 이어질 수 있습니다. 부모가 wrap_content도 아닌 경우 부모에게 상속 될 것이고 상한이있는 부모에게 도달 할 때까지 연장됩니다.

이 경우 상위 부모는 휴대 전화의 크기로 묶여 있으므로 중지됩니다. 내면에 중력을 사용하는 대신 LinearLayout. 가장 안쪽에있는 layout_centerInParent="true" 속성을 사용하십시오 (LinearLayout). 레이아웃이 ImageView보다 큰 경우가 아니면 RelativeLayout의 중심을 따라야합니다.

편집 : 당신은 또한 ImageView의 다른 스케일 유형을 실험 할 수 있습니다. 비율을 자르거나 왜곡시키지 않고 얻을 수있는만큼 큰 이미지의 비율을 조정하는 것도 있습니다. 항상 전체보기를 채우지 만 이미지를 자르거나 왜곡시킬 수있는 것도 있습니다.

1

게시물에서 불분명 한 점이 많습니다. XML 코드의 전체 버전을 게시해야합니다.

내 이해에서 layout_alignParentBottom="true" 또는 layout_centerVertical="true"과 같은 RelativeLayout 제약 조건을 사용하지 않는 것 같습니다. 그것들은 중력 속성과 달리 작동 할 것입니다.

관련 문제