2011-08-06 23 views
2

WebViewとギャラリーが上にレイアウトされています。私はギャラリーの20%を常に画面に与えたいと思います。 WebViewは常に80%を占める必要があります。ギャラリーとWebViewの固定比率をレイアウトする方法は?

通常、これはすべてのレイアウトでlayout_weightと一緒に使用できます。これは、値が大きいほど小さいビュー、1が最大のビューです。このレイアウトでは全く違っています。ここでは、大きな要素に大きな値を使用する必要があり、固定された比率ではありません。

ご協力いただきまして誠にありがとうございます。

<?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の2つのコンポーネントがあり、幅はそれぞれ10ピクセルと30ピクセルに設定された(水平のLinearLayout)コンテナを使用することを検討してください。サイズを計算するには、最初にコンテナサイズから幅を減算します。100 - 10 - 30 = 60次に、60 /(1 + 1)= 30の比率で分割し、それに応じて各パーツを配分します。最初のビューの幅は10 + 30 = 40で、2番目のビューの幅は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

どうもありがとうございました。これは私が探していたものです。ところで、今私は、この例では最高の重みがより大きな視野であり、すべての行のロイアウトにおいて、より大きい部分が常に1であり、小さな部分がより高い価値を有するのではないかと考えている。これらの行レイアウトが誤って正しく動作しているようです。 –

+0

デフォルトでは、ビューの重みはゼロです。 「より大きなビュー」には1の重みが与えられ、他のものには明示的な重みが全く与えられない(したがって、ゼロにデフォルト設定される)多くの例がある。あなたが見たことはこれですか?また、前にも述べたように、ビューの幅も考慮する必要があります。ウェイトが大きいほどビューは小さくなります。ウェイトは余分なスペースのみを分散するためです。 – antonyt

+0

レイアウトに関しては、私はいつも失われています.2つのビュー/ウィジェットを水平方向に等しく並べ替えるには、両方とも重み== 0なのでlayout_width = "0dip"と重みを使用する必要がありますか?現在、私は常にウェイト== 1で "WRAP_CONTENT"を使用しています。これはうまくいきますが、テキストが50%以上を占めていない場合にのみ、これが機能することを恐れています。 –

関連する問題