3

The problem is that I want two linearlayouts inside a linearlayout.And I want those 2 linearlayouts to be aligned vertically according to android:layout_weight property.But it seems that layout_weight is not having any effect. Here is my layout

<ScrollView>
    .....
    <LinearLayout>
     ...
       <LinearLayout>                             //1.Here the Linear Layout                                  is not getting aligned properly according to the layout_weight
        ...
           android:layout_height="0dp"
           android:layout_weight="3"
           .
           . 
           .
           .
      </LinearLayout>

      <LinearLayout>                               //2.These two Linear layouts are to be aligned vertically and this second layout is required to use very less space as compared to first layout
       . . . 
           android:layout_height="0dp"
           android:layout_weight="1"
           .
           . 
           .
      </LinearLayout>
   </LinearLayout>
</ScrollView>


Here is the full XML code for reference:

    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_margin="16dp"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:orientation="vertical"
            android:layout_weight="3" >

            <EditText
                android:id="@+id/edittext"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="16dp"
                android:layout_marginTop="30dp"
                android:ems="5"
                android:hint="Name"
                android:inputType="text" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginBottom="16dp"
                android:text="Toppings"
                android:textAllCaps="true" />

            <CheckBox
                android:id="@+id/whippedcream_checkbox_id"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="16dp"
                android:paddingLeft="24dp"
                android:text="Whipped Cream"
                android:textSize="16sp" />

            <CheckBox
                android:id="@+id/chocolate_checkbox_id"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="16dp"
                android:paddingLeft="24dp"
                android:text="Chocolate"
                android:textSize="16sp" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginBottom="16dp"
                android:text="Quantity"
                android:textAllCaps="true" />

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

                <Button
                    android:layout_width="48dp"
                    android:layout_height="48dp"
                    android:onClick="decrement"
                    android:text="-" />

                <TextView
                    android:id="@+id/quantity_text_view"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="8dp"
                    android:layout_marginRight="8dp"
                    android:text="2"
                    android:textColor="@android:color/black"
                    android:textSize="16sp" />

                <Button
                    android:layout_width="48dp"
                    android:layout_height="48dp"
                    android:onClick="increment"
                    android:text="+" />

            </LinearLayout>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="16dp"
                android:text="order summary"
                android:textAllCaps="true" />


            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="16dp"
                android:onClick="submitOrder"
                android:text="Order" />

        </LinearLayout>

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

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="PRICE:" />

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Coffee: Rs.5 per cup" />

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Whipped Cream: Rs.1 per cup additional" />

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Chocolate: Rs.2 per cup additional" />
        </LinearLayout>
    </LinearLayout>
</ScrollView>
Aakash Bansal
  • 707
  • 5
  • 12

2 Answers2

4
  1. add android:fillViewport="true" in scrollview
  2. add android:weightSum="4" main linearlayout

Here is the full code below,

    <?xml version="1.0" encoding="utf-8"?>
   <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
tools:context=".DemoActivity">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="16dp"
    android:orientation="vertical"
    android:weightSum="4">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="3"
        android:orientation="vertical">

        <EditText
            android:id="@+id/edittext"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="16dp"
            android:layout_marginTop="30dp"
            android:ems="5"
            android:hint="Name"
            android:inputType="text" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="16dp"
            android:text="Toppings"
            android:textAllCaps="true" />

        <CheckBox
            android:id="@+id/whippedcream_checkbox_id"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="16dp"
            android:paddingLeft="24dp"
            android:text="Whipped Cream"
            android:textSize="16sp" />

        <CheckBox
            android:id="@+id/chocolate_checkbox_id"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="16dp"
            android:paddingLeft="24dp"
            android:text="Chocolate"
            android:textSize="16sp" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="16dp"
            android:text="Quantity"
            android:textAllCaps="true" />

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

            <Button
                android:layout_width="48dp"
                android:layout_height="48dp"
                android:onClick="decrement"
                android:text="-" />

            <TextView
                android:id="@+id/quantity_text_view"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="8dp"
                android:layout_marginRight="8dp"
                android:text="2"
                android:textColor="@android:color/black"
                android:textSize="16sp" />

            <Button
                android:layout_width="48dp"
                android:layout_height="48dp"
                android:onClick="increment"
                android:text="+" />

        </LinearLayout>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:text="order summary"
            android:textAllCaps="true" />


        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:onClick="submitOrder"
            android:text="Order" />

    </LinearLayout>

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

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="PRICE:" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Coffee: Rs.5 per cup" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Whipped Cream: Rs.1 per cup additional" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Chocolate: Rs.2 per cup additional" />
    </LinearLayout>
</LinearLayout>

oldcode
  • 1,669
  • 3
  • 22
  • 41
Vijay Rajput
  • 1,091
  • 1
  • 13
  • 18
1

All content inside both the linear layouts has their layout_height set as wrap_content.

The important thing here is that, weights work only after all views having not weighted layout_height/layout_width have occupied space on the screen.

Example:

<?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">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:text="abcd1" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="abcd2" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="abcd3" />


</LinearLayout>

Here abcd2 and abcd3 TextViews would be alloted space first and then abcd1 would occupy the rest of the space on the screen.

Rohan Taneja
  • 9,687
  • 3
  • 36
  • 48