2011-11-29 3 views
0

부모 요소 내부의 특정 요소에 wrap_content의 방법이 있습니까? 예를 들어, 나는 다음과 같은 레이아웃 같은이 :RelativeLayout의 높이를 특정 하위 뷰로 제한

<RelativeLayout width:match height:wrap> 
    <ImageView width:match height:wrap scale:fitXY /> 
    <LinearLayout width:wrap height:wrap> 
</RelativeLayout> 

부모 랩 제약은 매우 느슨한입니다,하지만 난 그것을 구체적으로 일치하는 폭을 사용하지만, 항상 이미지 뷰의 높이를 일치합니다.

여기에서 문제는 잠재적으로 변경되는 수퍼 뷰를 채우기 위해 각 뷰가 다른 뷰의 위 또는 아래에 정렬 된 다른 RelativeLayout에이 뷰를 배치 할 때 발생합니다. LinearLayout은 실제로 채울 스트레칭을하지 않았기 때문에 Relative로 전환했지만, 그렇게했을 때 위에 설명한 뷰가 이미지 뷰의 높이와 여전히 일치하도록 세로로 늘어났습니다.

이 문제에 대한 좋은 해결책이 있습니까?

답변

0

당신은() 메소드 onResume에서 다음 (의사)를 넣어 시도 할 수 :

if(myRelativeLayout.height > myImageView.height) 
    myRelativeLayout.setHeight(myImageView.height); 
당신은이 작업을 수행하기 전에 myRelativeLayout.measure()를 호출해야 할 필요가

, 그래서 시스템은 View 어떤 크기를 알고 s 될 것입니다. 당신이 시도하는

그냥 생각, 그것은 작동하는지 알려주세요 :)

+0

을이 자체에 포함 된 화합물의 구성 요소이기 때문에, 아마') (onLayout'에 넣고 싶은 것이다. 그러나'RelativeLayout'에'setHeight()'메소드가없는 것 같습니다. 나는 onMeasure()를 재정의하고'setMeasuredDimension (this.getMeasuredWidth, this.subview.getMeasuredHeight()'와 이것에 대한 많은 다른 변형을 사용하려고 시도했지만 아무 것도 작동하지 않는다. 아무것도하지 않거나 전체보기가 사라지면 . –