1

私のアプリには、2 つの線形レイアウトがあります。1 つは上部に、もう 1 つは下部にあります。

これらの layout 内にあるものは何でも、上部のレイアウトが画面の高さの 60% を占め、下部のレイアウトが 40% を占めるようにしてください。ここに私のXMLコードがあります:

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

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

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.6"
        android:orientation="vertical" 
         android:id="@+id/layout_top">
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_weight="0.4" 
        android:id="@+id/layout_bottom">
    </LinearLayout>

</LinearLayout>

これらのレイアウトが空の場合、問題はありません。適切な比率になっています。

問題は、たとえば上部のレイアウトに小さなリストビューを配置すると、レイアウトがリストビューのサイズになり、60/40% の比率が維持されないことです。

リストビューが小さい場合でも (たとえば 3 項目のみ)、レイアウトは 60% を維持するので、リストビューの下に空きスペースを置きます。

に変更しようとしましandroid:layout_heightmatch_parentが、何も変わりません。

4

4 に答える 4

6

このレイアウトを使用してみてください

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:layout_weight="1.0" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="6"
        android:orientation="vertical" 
         android:id="@+id/layout_top"
         android:background="#FF0000">
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:orientation="vertical"
        android:layout_weight="4" 
        android:id="@+id/layout_bottom"
        android:background="#FF00FF">
    </LinearLayout>

</LinearLayout>

秘訣はlayout_height="0dip"、縦向きモードでは wrap_contentのlayout_with="0dip"代わりに、横向きモードでは wrap_content の代わりに、そのために layout-land フォルダーを使用できるように設定することです。

于 2012-05-20T11:55:48.703 に答える
1

layout_weight は、ビューのレイアウトの余分なスペースを指定します。最初に次のように画面を測定してみてください。

Display display = ((WindowManager) 
  getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); 
int width = display.getHeight();

width*0.6 や 0.4 のような計算を行うと、レイアウトの比率は常に 60 40 になります。

お役に立てれば

于 2012-05-20T11:31:55.037 に答える
0

try layout_height = 0dp in both the children LinearLayouts. Its happening because you have wrap_content which is probably overriding the layout_weight effect.

于 2012-05-20T11:38:46.123 に答える
0

親レイアウトで単純に置き換えandroid:layout_weight="1.0"ますandroid:weightSum="1.0"

これは、親レイアウトの重みの合計と子レイアウトの重みを設定することで機能します。子の重量は、親の重量の合計と等しくなければなりません。これを見てみましょうhttp://blog.stylingandroid.com/archives/312

于 2012-05-20T11:52:44.800 に答える