2012-04-22 4 views
4

가로가 LinearLayout 인 복잡한 레이아웃 상황에서 다른 두 개의 LinearLayout이 들어 있습니다. 이러한 레이아웃의 컨텐츠는 동적이며 모든 종류의보기 일 수 있으며 런타임에 서로 다른 독립적 인 소스에서 생성됩니다.LinearLayout 공간 분포

충분한 공간이있는 한 두 가지를 모두 표시하고 사용 가능한 공간의 50 %로 제한하고 싶습니다. 그래서 나는 그 아이들 LinearLayout가 충분한 공간이있을 때 layout_width="wrap_content"을 가지고 있고, 그렇지 않은 경우 layout_weight="0.5"을 가지기를 바란다. 이것은 공간 분포가 10-90, 25-75, 60-40 일 수 있음을 의미합니다. 두보기의 전체 내용을 표시 할 공간이 충분하지 않은 경우에만 50-50이됩니다. 지금까지 XML에서이 작업을 수행 할 방법을 찾지 못했기 때문에 코드에서 처리하고 있습니다. 내 질문은 XML 속성 만 사용하여 원하는 것을 얻을 수 있습니까? 다른 종류의 레이아웃이이를 수행 할 수 있습니까?

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center_vertical" 
    android:orientation="horizontal" 
    android:padding="2dp" > 

    <LinearLayout 
     android:id="@+id/title_frame" 
     android:layout_width="wrap_content" 
     android:layout_height="48dp"/> 

    <LinearLayout 
     android:id="@+id/options_frame" 
     android:layout_width="wrap_content" 
     android:layout_height="48dp"/> 

</LinearLayout> 
+0

xml 파일을 추가 할 수 있습니까? –

답변

1

XML 속성만으로는이를 달성 할 수없는 것처럼 보입니다.

+0

그 다음에는 무엇을 얻을 수 있습니까? :) 이것이 코딩 될 수있는 방법을 알고 있습니까? – Zordid

0

변경 layout_width = "wrap_content"당신이 무게 개념을 사용하는 것처럼 = "fill_parent"을 layout_width하기 :

여기에 내 현재의 레이아웃 XML입니다.

+0

'layout_weight'는 'LinearLayout'의 추가 공간이 연결된 뷰에 얼마나 할당되는지 나타냅니다. layout_width = "fill_parent"를 설정하면 할당 할 추가 공간이 없습니다. –

+0

네, 우리는 부모님을 채우고 나서 최소한 당신의 경우 무게를 지정해야합니다. 한 번 해보면 문제가 해결 될 수 있습니까? –

+0

시도해 보셨습니까? –

2

시도해보십시오.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center_vertical" 
    android:orientation="horizontal" 
    android:padding="2dp" > 

    <LinearLayout 
     android:id="@+id/title_frame" 
     android:layout_width="wrap_content" 
     android:layout_height="48dp" android:layout_weight="1"> 

    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/options_frame" 
     android:layout_width="wrap_content" 
     android:layout_height="48dp" android:layout_weight="1"> 

    </LinearLayout> 

</LinearLayout> 

나는 textviews로 시도했는데 이것은 요구 사항에 따라 작동해야합니다.

+0

이것은 트릭을하는 것 같습니다! 그러나 어떻게 작동합니까? '부정적'추가 공간이 어린이에게 똑같이 할당됩니까? –

+0

무게는 내가 이해하려고 노력하는 까다로운 개념이다. 이 경우 두 레이아웃에 동일한 가중치가 부여되고 동시에 wrap_content가 만들어집니다. 한 항목에 항목이없고 다른 항목에 항목이없는 경우 wrap_content는 빈 레이아웃을 감싸려고하고 아무 것도 끝내지 않으므로 다른 항목이 확장되어 해당 위치를 채 웁니다. fill_parent로 만들었 으면 레이아웃이 비어 있어도 2 개의 레이아웃은 동일한 공간을 사용하게됩니다. 이것은 실험을 기반으로 한 나의 이해입니다. 일단 시간이 있으면 구현을 확인하려고합니다. :) – Shubhayu

+0

불행히도 이것은 필요에 따라 정확히 작동하지 않습니다. 두 아이의 너비의 합이 사용 가능한 공간보다 크고 다른 아이의 너비의 합이 다른 것보다 상당히 큰 경우 더 짧은 것이 사용 가능한 공간의 절반보다 작은 경우에도 전체가 표시되지 않습니다. –