了解layout_weight

时间:2016-03-16 13:58:45

标签: android android-layout android-layout-weight

我想这样做:

enter image description here

问题:所有布局都由ScrollView包含在LinearLayout中,底部必须是步进器的按钮。为此,我使用layout_weight来定位空间中的元素我想要的方式。

这是我的XML代码:

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

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:fillViewport="true"
    android:background="@drawable/shape_fondo"
    android:layout_weight="1">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <LinearLayout

            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:orientation="vertical">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">
                <ImageView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginBottom="12dp"
                    android:src="@mipmap/indicador_wizzard2"/>
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:text="Días de ingesta"
                    android:layout_marginBottom="6dp"/>
            </LinearLayout>

            <LinearLayout
                android:orientation="horizontal"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginRight="12dp"
                android:layout_marginLeft="12dp"
                android:weightSum="49">

                <ToggleButton
                    android:id="@+id/lunes"
                    android:layout_weight="7"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:background="@drawable/botonesdias"
                    android:textOn="Lu"
                    android:textOff="Lu"/>
                <ToggleButton
                    android:id="@+id/martes"
                    android:layout_weight="7"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:background="@drawable/botonesdias"
                    android:textOn="Ma"
                    android:textOff="Ma"/>
                <ToggleButton
                    android:id="@+id/miercoles"
                    android:layout_weight="7"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:background="@drawable/botonesdias"
                    android:textOn="Mie"
                    android:textOff="Mie"/>
                <ToggleButton
                    android:id="@+id/jueves"
                    android:layout_weight="7"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:background="@drawable/botonesdias"
                    android:textOn="Jue"
                    android:textOff="Jue"/>
                <ToggleButton
                    android:id="@+id/viernes"
                    android:layout_weight="7"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:background="@drawable/botonesdias"
                    android:textOn="Vie"
                    android:textOff="Vie"/>
                <ToggleButton
                    android:id="@+id/sabado"
                    android:layout_weight="7"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:background="@drawable/botonesdias"
                    android:textOn="Sa"
                    android:textOff="Sa"/>
                <ToggleButton
                    android:id="@+id/domingo"
                    android:layout_weight="7"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:background="@drawable/botonesdias"
                    android:textOn="Do"
                    android:textOff="Do"/>


            </LinearLayout>
        </LinearLayout>
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="2.3"
            android:id="@+id/contenedortitulito">

            <TextView
                android:id="@+id/titulohora"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20dp"
                android:layout_alignParentLeft="true"
                android:text="Hora" />

            <TextView
                android:id="@+id/titulodosis"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginRight="20dp"
                android:layout_alignParentRight="true"
                android:text="Dosis"/>



        </RelativeLayout>
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <ListView
                android:id="@+id/listview"
                android:background="@color/azul"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_above="@+id/contenedortitulito"/>

        </RelativeLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <Button
                style="@style/botones"
                android:id="@+id/btn_cancelar2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="0.5"
                android:text="Atrás"
                android:layout_gravity="center"/>

            <Button
                style="@style/botones"
                android:id="@+id/btn_irapaso3"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="0.5"
                android:text="Continuar"
                android:layout_gravity="center" />



        </LinearLayout>
    </LinearLayout>
</ScrollView>

我不太了解布局权重的概念。你能解释一下吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

您需要首先为父布局提供权重,然后才能相应地分配权重。

我提供了屏幕示例,其中我使用了weightum和layout_weight。 您也可以在scrollview上应用布局权重

example screen

以下是示例屏幕的代码。 您可以忽略第一个相对布局。 希望它有助于

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/whole_bg">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginBottom="35dp"
    android:orientation="vertical"
    android:weightSum="1">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight=".15"
        android:background="@drawable/top"
        android:orientation="horizontal"
        android:weightSum="6">

        <ImageView
            android:id="@+id/ivHome"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:src="@drawable/ll_home" />

        <ImageView
            android:id="@+id/ivTraderList"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:src="@drawable/ll_traderlist_green" />

        <ImageView
            android:id="@+id/ivStatement"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:src="@drawable/ll_statement_green" />

        <ImageView
            android:id="@+id/ivSummary"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:src="@drawable/ll_summary_green" />

        <ImageView
            android:id="@+id/ivProduct"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:src="@drawable/ll_product_green" />

        <ImageView
            android:id="@+id/ivLogout"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:src="@drawable/ll_logout" />
    </LinearLayout>

    <TextView
        style="@style/TitleStyle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="5dp"
        android:text="@string/trader_list_str" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/lightGreen"
        android:orientation="horizontal"
        android:weightSum="1">

        <EditText
            android:id="@+id/etDate"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight=".495"
            android:editable="false"
            android:focusable="false"
            android:gravity="center"
            android:text="@string/date_str"
            android:textAppearance="?android:textAppearanceMedium"
            android:textColor="@color/white"
            android:textStyle="bold" />

        <View
            android:layout_width="0dp"
            android:layout_height="25dp"
            android:layout_gravity="center"
            android:layout_weight=".005"
            android:background="@android:color/darker_gray" />

        <EditText
            android:id="@+id/etTime"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight=".495"
            android:editable="false"
            android:focusable="false"
            android:gravity="center"
            android:text="@string/time_str"
            android:textAppearance="?android:textAppearanceMedium"
            android:textColor="@color/white"
            android:textStyle="bold" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight=".84"
        android:orientation="vertical"
        android:weightSum="1">

        <ListView
            android:id="@+id/list"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight=".8" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight=".2"
            android:orientation="vertical"
            android:weightSum="2">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_margin="10dp"
                android:layout_weight="1"
                android:background="@color/lightYellow"
                android:orientation="horizontal"
                android:weightSum="1">

                <TextView
                    android:id="@+id/tvLabelTotal"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:layout_weight=".595"
                    android:gravity="center"
                    android:text="@string/total_str"
                    android:textAppearance="?android:textAppearanceMedium" />

                <View
                    android:layout_width="0dp"
                    android:layout_height="20dp"
                    android:layout_gravity="center"
                    android:layout_weight=".01"
                    android:background="@android:color/darker_gray" />

                <TextView
                    android:id="@+id/tvTotal"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:layout_marginLeft="1dp"
                    android:layout_weight=".395"
                    android:gravity="center" />
            </LinearLayout>

            <TextView
                android:id="@+id/tvOrder"
                style="@style/BtnStyle"
                android:layout_width="wrap_content"
                android:layout_height="0dp"
                android:layout_gravity="center"
                android:layout_marginBottom="5dp"
                android:layout_weight="1"
                android:onClick="placeOrder"
                android:paddingLeft="30dp"
                android:paddingRight="30dp"
                android:text="@string/place_order_str" />
        </LinearLayout>
    </LinearLayout>
</LinearLayout>

<LinearLayout
    android:id="@+id/advtLabel"
    android:layout_width="match_parent"
    android:layout_height="35dp"
    android:layout_alignParentBottom="true"
    android:background="@color/lightYellow"
    android:orientation="horizontal" />