android:layout_weight无法正常工作

时间:2015-09-23 09:36:39

标签: android xml android-layout

我想在一个TableRow中使用TextView和EditText,我希望EditText的宽度比TextView大两倍,所以我将它放在TextView区域中:

android:layout_weight="1"

并在EditText区域中:

android:layout_weight="2"

但它看起来并不正确:

enter image description here

我的整个.xml文件:

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

我做错了什么?

6 个答案:

答案 0 :(得分:5)

对于每个TextView和EditText,将android:layout_width="match_parent"更改为android:layout_width="0dp"

这将解决它。

答案 1 :(得分:2)

执行以下操作

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

答案 2 :(得分:1)

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

试试吧。希望它的工作。

答案 3 :(得分:1)

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

答案 4 :(得分:1)

你的layout_width应为0dip。这是一个很好的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>

答案 5 :(得分:0)

public void setActivity(Activity a){
    this.activity = a;
}