51

LinearLayout 内に ListView を実装しましたが、LinearLayout の高さを定義する必要があります (画面の高さの 50% である必要があります)。

<LinearLayout
    android:id="@+id/widget34"
    android:layout_width="300px"
    android:layout_height="235px"
    android:orientation="vertical"
    android:layout_below="@+id/tv_scanning_for"
    android:layout_centerHorizontal="true">

    <ListView
        android:id="@+id/lv_events"
        android:textSize="18sp"         
        android:cacheColorHint="#00000000"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/tv_scanning_for"
        android:layout_centerHorizontal="true">
    </ListView>

</LinearLayout>

それは可能ですか?

ボタンと EditText に対して同様のことを行いましたが、レイアウトでは機能しないようです。

これは私のコードです:

    //capture the size of the devices screen
    Display display = getWindowManager().getDefaultDisplay();
    double width = display.getWidth();

    //my EditText will be smaller than full screen (80%)        
    double doubleSize = (width/5)*4;
    int editTextSize = (int) doubleSize;

    //define the EditText 
    userName = (EditText) this.findViewById(R.id.userName);
    password = (EditText) this.findViewById(R.id.password);

    //set the size
    userName.setWidth(editTextSize);
    password.setWidth(editTextSize);
4

10 に答える 10

96

layout_height="0dp"その* を設定し、そのView下に空白 (または空白ImageViewまたは単にFrameLayout) を追加し、 alayout_heightも に等しく0dp、両方のビューを設定して、layout_weight="1"

これにより、各ビューが画面いっぱいに均等に引き伸ばされます。どちらもウェイトが同じなので、それぞれが画面の 50% を占めます。

*なぜそれが機能するのか、およびその他の非常に役立つヒントについては、adamp のコメントを参照してください。

于 2011-07-22T18:08:44.577 に答える
8

これは、xml で簡単に実行できます。一番上のコンテナを LinearLayout に設定し、必要に応じて方向属性を設定します。次に、その場所の内側に、幅と高さに「塗りつぶしの親」を持つ2つの線形レイアウトを配置します。最後に、これら 2 つの線形レイアウトの重み属性を 1 に設定します。

于 2011-07-22T18:09:33.997 に答える
6

これは私の android:layout_height=50% アクティビティです:

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

    <LinearLayout
        android:id="@+id/alipay_login"
        style="@style/loginType"
        android:background="#27b" >
    </LinearLayout>

    <LinearLayout
        android:id="@+id/taobao_login"
        style="@style/loginType"
        android:background="#ed6d00" >
    </LinearLayout>

</LinearLayout>

スタイル:

<style name="loginType">
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">match_parent</item>
    <item name="android:layout_weight">0.5</item>
    <item name="android:orientation">vertical</item>
</style>
于 2013-02-07T10:38:09.160 に答える
3

最善の方法は使用です

layout_height="0dp" layout_weight="0.5"

例えば

<WebView
    android:id="@+id/wvHelp"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="0.5" />

<TextView
    android:id="@+id/txtTEMP"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="0.5"
    android:text="TextView" />

WebView、TextView は画面の高さの 50% を持っています

于 2015-01-12T21:52:19.863 に答える
1

この種の私のために働いた。FAB は独立して浮くわけではありませんが、現在は押し下げられていません。

LinearLayout 内で指定された重みを確認します

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

            <android.support.v7.widget.RecyclerView
                android:id="@+id/sharedResourcesRecyclerView"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="4"
                />

            <android.support.design.widget.FloatingActionButton
                android:id="@+id/fab"
                android:layout_width="wrap_content"
                android:layout_height="0dp"
                android:layout_gravity="bottom|right"
                android:src="@android:drawable/ic_input_add"
                android:layout_weight="1"/>

        </LinearLayout>

お役に立てれば :)

于 2016-07-31T09:51:26.540 に答える
0

あなたはそのようなことをするべきです:

<LinearLayout
    android:id="@+id/widget34"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:layout_below="@+id/tv_scanning_for"
    android:layout_centerHorizontal="true">

    <ListView
        android:id="@+id/lv_events"
        android:textSize="18sp"         
        android:cacheColorHint="#00000000"
        android:layout_height="1"
        android:layout_width="fill_parent"
        android:layout_weight="0dp"
        android:layout_below="@+id/tv_scanning_for"
        android:layout_centerHorizontal="true"
        />

</LinearLayout>

また、pxの代わりにdpを使用するか、こちらを参照して ください

于 2011-07-22T18:18:17.600 に答える
0

この偉業を達成するには、. で外側の線形レイアウトを定義しますweightSum={amount of weight to distribute}

最大重量合計を定義します。指定しない場合、すべての子の layout_weight を加算して合計が計算されます。これは、たとえば、layout_weight を 0.5 に設定し、weightSum を 1.0 に設定することで、使用可能な合計スペースの 50% を 1 つの子に割り当てるために使用できますlayout_weight=1。使用可能なスペースの 50% を取得します。

WeightSum は、親レイアウトの子の数に依存します。

于 2017-05-04T16:52:39.710 に答える