2011-08-06 4 views
2

맨 위에 WebView와 갤러리가 포함 된 레이아웃이 있습니다. 갤러리의 20 %를 항상 제공하고 싶습니다. WebView는 항상 80 %를 차지해야합니다.갤러리와 WebView간에 고정 비율을 배치하는 방법은 무엇입니까?

일반적으로 모든 레이아웃에서 높은 값은 작은보기이고 1은 가장 큰보기 인 layout_weight와 함께 작동합니다. 이 레이아웃에서는 완전히 다릅니다. 여기에서는 더 큰 요소에 더 높은 값을 사용해야하며 고정 된 비율로 유지되지 않습니다.

도움이 매우 감사합니다.

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

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

    <Gallery 
     android:id="@+id/gallery" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:layout_width="fill_parent" 
     android:spacing="2dip" />  

    <View 
     android:background="@android:color/white" 
     android:layout_height="1dip" 
     android:layout_marginTop="6dip" 
     android:layout_width="fill_parent" /> 

    <WebView 
     android:id="@+id/webview" 
     android:layout_height="wrap_content" 
     android:layout_weight="5" 
     android:layout_width="fill_parent" /> 
</LinearLayout> 

답변

1

가중치는 높이/너비 값을 고려한 후 추가 공간을 분배하는 데 사용됩니다. 세로 LinearLayout의 경우 20/80 비율 (구분 기호 제외)을 유지하려면 구성 요소의 높이를 0으로 설정해야합니다 (단위는 상관 없음). 그렇지 않으면 Android가 먼저 높이를 고려하고 나머지 공간 만 가중치의 비율로 배포합니다.

예를 들어 너비가 100 픽셀이고 두 구성 요소 모두 가중치가 1이지만 너비는 각각 10 픽셀과 30 픽셀로 설정된 (수평 선형 선형) 컨테이너를 고려하십시오. 크기를 계산하려면 먼저 컨테이너 크기 (100 - 10 - 30 = 60)에서 너비를 뺍니다. 그런 다음 60/(1 + 1) = 30의 비율로 나누고 그에 따라 각 부분을 분배합니다. 첫 번째보기의 너비는 10 + 30 = 40이고 두 번째보기의 너비는 30 + 30 = 60입니다 (동일한 가중치 임에도 불구하고).

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

<Gallery 
    android:id="@+id/gallery" 
    android:layout_height="0px" 
    android:layout_weight="1" 
    android:layout_width="fill_parent" 
    android:spacing="2dip" />  

<View 
    android:background="@android:color/white" 
    android:layout_height="1dip" 
    android:layout_marginTop="6dip" 
    android:layout_width="fill_parent" /> 

<WebView 
    android:id="@+id/webview" 
    android:layout_height="0px" 
    android:layout_weight="5" 
    android:layout_width="fill_parent" /> 
</LinearLayout> 
+0

고마워 :

는 다음과 같은 레이아웃을보십시오. 이것이 제가 찾고 있던 것입니다. BTW, 지금 나는이 예제에서 왜 가장 높은 무게가 더 큰 시야인지 궁금해하고 나의 모든 열 loyouts에서 더 큰 부분은 항상 1이고 더 작은 부분은 더 높은 가치를 가진다. 이 행 레이아웃이 실수로 올바르게 작동하는 것 같습니다. –

+0

기본적으로보기의 가중치는 0입니다. '더 큰 시야'에는 1의 가중치가 부여되고 다른 하나에는 명시 적 가중치가 주어지지 않으므로 (따라서 기본값은 0 임) 많은 사례가 있습니다. 이게 너가 본거야? 또한 앞에서 언급했듯이보기 너비도 고려해야합니다. 더 큰 가중치가있는보기는 가중치가 여분의 공간 만 분배하기 때문에 작아집니다. – antonyt

+0

레이아웃과 관련하여 항상 잃어 버렸습니다 ... 가로 방향으로 두 개의 뷰/위젯을 동일하게 정렬하려면 layout_width = "0dip"을 사용해야하고 가중치는 모두 == 0이기 때문에 가젯을 사용해야합니까? 현재 저는 항상 "WRAP_CONTENT"와 weight == 1을 사용합니다. 이 방법은 효과가 있지만 텍스트가 50 % 이상 차지하는 경우에만 작동하는 것이 두려워요. –

관련 문제