如何将此EditText放在LinearLayout的右侧?

时间:2015-01-30 10:03:40

标签: android xml layout android-edittext android-linearlayout

我创建了这个表单:

enter image description here

编写此XML布局:

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

    <LinearLayout
        android:id="@+id/fields"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_marginTop="20dp"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp">

        <LinearLayout
            android:id="@+id/layoutCountry"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/textCountry"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:textSize="18sp"
                android:text="@string/text_country"
                android:textColor="@color/black" />

            <Spinner
                android:id="@+id/spinnerCountry"
                android:layout_height="wrap_content"
                android:layout_width="0dp"
                android:layout_weight="1.5"
                android:textSize="18sp"
                android:inputType="text"
                android:textColor="@color/black" />
        </LinearLayout>

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

            <EditText
                android:id="@+id/editCustom"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textSize="18sp"
                android:inputType="text"
                android:textColor="@color/black" />
        </LinearLayout>

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

            <TextView
                android:id="@+id/city"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:textSize="18sp"
                android:text="@string/text_city"
                android:textColor="@color/black" />

            <EditText
                android:id="@+id/editCity"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1.5"
                android:textSize="18sp"
                android:inputType="text"
                android:textColor="@color/black" />
         </LinearLayout>

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

            <TextView
                android:id="@+id/postal"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:textSize="18sp"
                android:text="@string/text_postal"
                android:textColor="@color/black" />

            <EditText
                android:id="@+id/editPostal"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1.5"
                android:textSize="18sp"
                android:inputType="text"
                android:textColor="@color/black" />
        </LinearLayout>

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

            <TextView
                android:id="@+id/textAddress"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:textSize="18sp"
                android:text="@string/text_address"
                android:textColor="@color/black" />

            <EditText
                android:id="@+id/editAddress"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1.5"
                android:textSize="18sp"
                android:inputType="text"
                android:textColor="@color/black" />
        </LinearLayout>

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

            <TextView
                android:id="@+id/textTel"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:textSize="18sp"
                android:text="@string/text_tel"
                android:textColor="@color/black" />

            <EditText
                android:id="@+id/editTel"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1.5"
                android:textSize="18sp"
                android:inputType="text"
                android:textColor="@color/black" />
        </LinearLayout>

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

            <TextView
                android:id="@+id/textEmail"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:textSize="18sp"
                android:text="@string/email"
                android:textColor="@color/black" />

            <EditText
                android:id="@+id/editEmail"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1.5"
                android:textSize="18sp"
                android:inputType="textEmailAddress"
                android:textColor="@color/black" />
        </LinearLayout>

    </LinearLayout>
</ScrollView>

正如您所看到的,第二个EditText太长了,我会将其与其他字段对齐,如下所示:

enter image description here

我尝试在那里使用RelativeLayout并使用LinearLayout进行一些更改,但我变得疯狂,因为我无法达到我的目的。 我对XML布局并不那么专业...... :(

5 个答案:

答案 0 :(得分:1)

我只编辑了第二个LinearLayout问题,这是解决方案:

  1. EditText中,您必须将layout_weight="1.5"设置为与其他android:layout_width="0dp"
  2. 相同
  3. EditText的父视图中,LinearLayout设置android:weightSum=2.5"(1 + 1.5)
  4. android:gravity="right"设为LinearLayout Fin!

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:weightSum="2.5"
        android:gravity="right"
        android:orientation="horizontal">
    
        <EditText
            android:id="@+id/editCustom"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:textSize="18sp"
            android:inputType="text"
            android:layout_weight="1.5"
            android:textColor="@color/black" />
    </LinearLayout>
    

答案 1 :(得分:1)

通过

替换第二个EditText的代码
 <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal" >
        <TextView
            android:id="@+id/textCountry"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="" />
        <EditText
            android:id="@+id/editCustom"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1.5"
            android:inputType="text"
            android:textColor="@color/black"
            android:textSize="18sp" />
    </LinearLayout>

你可以添加空的Textview并为你实现它们定义合适的权重。并确保当你为任何视图定义layout_weight定义宽度为android:layout_width =“0dp”

答案 2 :(得分:0)

答案 3 :(得分:0)

尝试将重力设置为右,然后设置一些边距。可能做你想要的。大多数时候我更喜欢使用RelativeLayouts,因为它们更容易操作。

答案 4 :(得分:0)

在EditText的父级LinearLayout视图中有以下内容:

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:alignLeft="@id/spinnerCountry"
        android:orientation="horizontal">

这会将整个LinearLayout的左侧与Spinner的左侧对齐。