Alex
Alex

Reputation: 44325

How to fix width issues in a LinearLayout?

I have a ListView in android that is populated through an adapter by a LinearLayout as follows:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="5dp" >

    <TextView
        android:id="@+id/listname"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="0.5"
        android:text="@+id/label"
        android:textSize="100px" >
    </TextView>
    <TextView
        android:id="@+id/listcurrent"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="0.2"
        android:text="@+id/label"
        android:textSize="100px" >
    </TextView>
    <TextView
        android:id="@+id/listoffset"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="0.2"
        android:text="@+id/label"
        android:textSize="100px" >
    </TextView>
    <ImageView
        android:id="@+id/logo"
        android:layout_width="100px"
        android:layout_height="100px"
        android:layout_marginLeft="5px"
        android:layout_marginRight="20px"
        android:layout_marginTop="5px"
        android:layout_weight="0.1"
        android:src="@drawable/icon4" >
    </ImageView>


</LinearLayout>

I tried so set the width of the different elements to a percentage as suggested here. But it does not work!

The ListView looks like this:

Android1234.4500.00
iOS123.4500.00

i.e. the different elements are placed next to each other. I expected something like this:

Android         123.45   00.00
iOS             123.45   0.000

So how to fix the xml layout?

Upvotes: 1

Views: 645

Answers (3)

Keshav Gera
Keshav Gera

Reputation: 11244

<?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="wrap_content"
        android:layout_margin="5dp"
        android:orientation="vertical"
        android:padding="5dp">

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

        <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Name"
                android:paddingLeft="5dp"
                android:textColor="#000000"
                android:textSize="18dp">
        </TextView>

        <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Keshav"
                android:paddingLeft="5dp"
                android:textColor="#000000"
                android:textSize="18dp">
        </TextView>
    </LinearLayout>
    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:weightSum="2"
            >

        <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Emp Id"
                android:paddingLeft="5dp"
                android:textColor="#000000"
                android:textSize="18dp">
        </TextView>

        <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="1724"
                android:paddingLeft="5dp"
                android:textColor="#000000"
                android:textSize="18dp">
        </TextView>
    </LinearLayout>
    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:weightSum="2"
            >

        <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Designation"
                android:paddingLeft="5dp"
                android:textColor="#000000"
                android:textSize="18dp">
        </TextView>

        <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Sr Android Developer"
                android:paddingLeft="5dp"
                android:textColor="#000000"
                android:textSize="18dp">
        </TextView>
    </LinearLayout>
    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:weightSum="2"
            >

        <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Blood Group"
                android:paddingLeft="5dp"
                android:textColor="#000000"
                android:textSize="18dp">
        </TextView>

        <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="B Positive"
                android:paddingLeft="5dp"
                android:textColor="#000000"
                android:textSize="18dp">
        </TextView>
    </LinearLayout>
    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:weightSum="2"
            >

        <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Qualification"
                android:paddingLeft="5dp"
                android:textColor="#000000"
                android:textSize="18dp">
        </TextView>

        <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="MCA"
                android:paddingLeft="5dp"
                android:textColor="#000000"
                android:textSize="18dp">
        </TextView>
    </LinearLayout>

</LinearLayout>

enter image description here

Upvotes: 3

Khang Doan
Khang Doan

Reputation: 436

Basically:

  • Width of child element (android:layout_width="0dp") must be 0dp

  • android:layout_weight="5" is 50% of width

You can try this example:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="#1e90ff" 
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="5dp" >

    <TextView
        android:id="@+id/listname"
        android:background="#1effff" 
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:layout_weight="5"
        android:text="Android"
        android:textSize="100px" >
    </TextView>
    <TextView
        android:id="@+id/listcurrent"
        android:background="#1e0caa" 
        android:layout_width="0dp"
        android:layout_height="fill_parent" 
        android:layout_weight="2"
        android:text="123.45"
        android:textSize="100px" >
    </TextView>
    <TextView
        android:id="@+id/listoffset"
        android:background="#1e0cfd" 
        android:layout_width="0dp"
        android:layout_height="fill_parent" 
        android:layout_weight="2"
        android:text="00.00"
        android:textSize="100px" >
    </TextView>
    <ImageView
        android:id="@+id/logo"
        android:layout_width="0dp"
        android:layout_height="100px"
        android:layout_marginLeft="5px"
        android:layout_marginRight="20px"
        android:layout_marginTop="5px"
        **android:layout_weight="1"
        android:src="@drawable/ic_launcher" >
    </ImageView>


</LinearLayout>

Reference doc: Linear Layout Weight

Screenshot

enter image description here

Upvotes: 1

curiousMind
curiousMind

Reputation: 2812

you have to put width is 0dp and android:layout_width="match_parent"

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
orientation="horizontal"
android:padding="5dp" >

<TextView
    android:id="@+id/listname"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="0.5"
    android:text="@+id/label"
    android:textSize="100px" >
</TextView>
<TextView
    android:id="@+id/listcurrent"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="0.2"
    android:text="@+id/label"
    android:textSize="100px" >
</TextView>
<TextView
    android:id="@+id/listoffset"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="0.2"
    android:text="@+id/label"
    android:textSize="100px" >
</TextView>
<ImageView
    android:id="@+id/logo"
    android:layout_width="100px"
    android:layout_height="100px"
    android:layout_marginLeft="5px"
    android:layout_marginRight="20px"
    android:layout_marginTop="5px"
    android:layout_weight="0.1"
    android:src="@drawable/icon4" >
</ImageView>


</LinearLayout>

Upvotes: 3

Related Questions