Krzysztof Majewski
Krzysztof Majewski

Reputation: 2534

android:layout_weight not working properly

I want a TextView and EditText in one TableRow and I want EditText to have twice larger width than TextView, so I put this in TextView area:

android:layout_weight="1"

and in EditText area:

android:layout_weight="2"

but it doesn't look right:

enter image description here

My whole .xml file:

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

    <TableRow
        android:id="@+id/imageButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:padding="8dp" >

        <ImageView
            android:id="@+id/imageView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:adjustViewBounds="true"
            android:maxHeight="150dp"
            android:maxWidth="150dp"
            android:scaleType="centerInside"
            android:src="@drawable/add_user" />
    </TableRow>

    <TableRow
        android:id="@+id/loginRow"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="8dp" >

        <TextView
            android:id="@+id/loginTextView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/login_text_view" />

        <EditText
            android:id="@+id/loginEditText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:inputType="text" >

            <requestFocus />
        </EditText>
    </TableRow>

    <TableRow
        android:id="@+id/passwordRow"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="8dp" >

        <TextView
            android:id="@+id/passwordTextView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/password_text_view" />

        <EditText
            android:id="@+id/passwordEditText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:inputType="textPassword" />
    </TableRow>

    <TableRow
        android:id="@+id/nameRow"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="8dp" >

        <TextView
            android:id="@+id/nameTextView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/name_text_view" />

        <EditText
            android:id="@+id/nameEditText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:inputType="text" />
    </TableRow>

    <TableRow
        android:id="@+id/countryRow"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="8dp" >

        <TextView
            android:id="@+id/countryTextView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/country_text_view" />

        <EditText
            android:id="@+id/countryEditText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:inputType="text" />
    </TableRow>

    <TableRow
        android:id="@+id/phoneRow"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="8dp" >

        <TextView
            android:id="@+id/phoneTextView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/phone_text_view" />

        <EditText
            android:id="@+id/phoneEditText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:inputType="text|phone" />
    </TableRow>

    <TableRow
        android:id="@+id/buttonRow"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="20dp" >

        <Button
            android:id="@+id/addUserButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/add_user_button" />
    </TableRow>

</TableLayout>

What am I doing wrong?

Upvotes: 1

Views: 2488

Answers (6)

MPG
MPG

Reputation: 795

 <TableRow
    android:id="@+id/loginRow"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="8dp" >

    <TextView
        android:id="@+id/loginTextView"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight=".33"
        android:text="login_text_view" />

    <EditText
        android:id="@+id/loginEditText"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:inputType="text" >

        <requestFocus />
    </EditText>
</TableRow>

Upvotes: 0

user4571931
user4571931

Reputation:

Do as following

<TableRow
    android:id="@+id/loginRow"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="8dp"
    android:weightSum="3"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/loginTextView"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="login_text_view" />

    <EditText
        android:id="@+id/loginEditText"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="2"
        android:inputType="text" >
        <requestFocus />
    </EditText>

</TableRow>

Upvotes: 2

Andy.Zhao
Andy.Zhao

Reputation: 258

Your layout_width should be 0dip. This is a good example.

<TableRow
    android:id="@+id/loginRow"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="8dp"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/loginTextView"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="login_text_view" />

    <EditText
        android:id="@+id/loginEditText"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="2"
        android:inputType="text" >
        <requestFocus />
    </EditText>

</TableRow>

Upvotes: 1

Anand Savjani
Anand Savjani

Reputation: 2535

<TableRow
    android:id="@+id/loginRow"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="8dp"
    android:weightSum="3">

    <TextView
        android:id="@+id/loginTextView"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="abcdef"/>

    <EditText
        android:id="@+id/loginEditText"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="2"
        android:inputType="text">

        <requestFocus/>
    </EditText>
</TableRow>

Upvotes: 1

akhil batlawala
akhil batlawala

Reputation: 1066

<TableRow
        android:id="@+id/loginRow"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="8dp"
        android:weightSum="100" >

        <TextView
            android:id="@+id/loginTextView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="30"
            android:text="@string/login_text_view" />

        <EditText
            android:id="@+id/loginEditText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="60"
            android:inputType="text" >

            <requestFocus />
        </EditText>
    </TableRow>

Just try it. Hope its work.

Upvotes: 1

Eric B.
Eric B.

Reputation: 4702

For every TextView and EditText, change the android:layout_width="match_parent" to android:layout_width="0dp"

This will fix it.

Upvotes: 5

Related Questions