Android - 无法在LinearLayout中对齐两个按钮

时间:2016-03-16 10:13:06

标签: android android-layout

我使用LinearLayout创建了一个表单。除了两个按钮外,所有对象看起来都很好。 我试图在它们自己的LinearLayout中对齐它们,但由于某种原因,其中一个总是低于另一个。

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="il.ac.shenkar.david.todolistex2.InviteMember"
    tools:showIn="@layout/activity_invite_member">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="10dp"
    android:orientation="vertical"
    android:id="@+id/invitememberLayout1">
</LinearLayout>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:text="Invite Team Members"
    android:id="@+id/invitememebrsView"
    android:textSize="32sp"
    android:layout_alignTop="@+id/invitememberLayout1"
    android:layout_centerHorizontal="true"
    android:textStyle="bold" />

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="25dp"
    android:paddingLeft="25dp"
    android:orientation="vertical"
    android:id="@+id/invitememberLayout2">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Enter Team Member Email"
        android:layout_marginTop="60dp"
        android:paddingLeft="45dp"
        android:id="@+id/memberemail"
        android:layout_alignTop="@+id/createteamLayout2"
        android:layout_centerHorizontal="true"
        android:textStyle="bold" />

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:lines="8"
        android:minLines="1"
        android:layout_marginTop="20dp"
        android:hint="             mycool@emailaddress.com"
        android:inputType="textEmailAddress"
        android:digits="0,1,2,3,4,5,6,7,8,9,qwertzuiopasdfghjklyxcvbnmABCDEFGHIJKLMNOPQRSTUVWXYZ,@,."
        android:textSize="16sp"
        android:id="@+id/editemailaddress" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Phone Number"
        android:layout_marginTop="30dp"
        android:paddingLeft="85dp"
        android:id="@+id/memberphonetextView"
        android:layout_alignTop="@+id/invitememberLayout2"
        android:layout_centerHorizontal="true"
        android:textStyle="bold" />

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="phone"
        android:ems="10"
        android:maxLength="10"
        android:textSize="16sp"
        android:hint="                    Only digits allowed"
        android:id="@+id/memberuserphonenumber" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Invite Member"
        android:layout_marginTop="20dp"
        android:layout_marginLeft="80dp"
        android:layout_alignTop="@+id/createteamLayout2"
        android:id="@+id/invitebtn"
        android:onClick="onInviteMember" />

</LinearLayout>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="370dp"
    android:orientation="vertical"
    android:id="@+id/invitememberLayout4">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Done"
        android:id="@+id/Donebtn"
        android:onClick="onDonebtn"
        android:layout_gravity="right" />

    <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Exit"
    android:id="@+id/Exitbtn"
    android:onClick="onExitbtn"/>

</LinearLayout>

以下是用户界面 As you can the 'Exit' button is not aligned with the 'Done' button

8 个答案:

答案 0 :(得分:2)

bcz你定义了垂直方向。

在XML中替换此代码。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="il.ac.shenkar.david.todolistex2.InviteMember"
    tools:showIn="@layout/activity_invite_member">

    <LinearLayout
        android:id="@+id/invitememberLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:orientation="vertical"></LinearLayout>

    <TextView
        android:id="@+id/invitememebrsView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/invitememberLayout1"
        android:layout_centerHorizontal="true"
        android:text="Invite Team Members"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textSize="32sp"
        android:textStyle="bold" />

    <LinearLayout
        android:id="@+id/invitememberLayout2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="25dp"
        android:orientation="vertical"
        android:paddingLeft="25dp">

        <TextView
            android:id="@+id/memberemail"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignTop="@+id/createteamLayout2"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="60dp"
            android:paddingLeft="45dp"
            android:text="Enter Team Member Email"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textStyle="bold" />

        <EditText
            android:id="@+id/editemailaddress"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:digits="0,1,2,3,4,5,6,7,8,9,qwertzuiopasdfghjklyxcvbnmABCDEFGHIJKLMNOPQRSTUVWXYZ,@,."
            android:hint="             mycool@emailaddress.com"
            android:inputType="textEmailAddress"
            android:lines="8"
            android:minLines="1"
            android:textSize="16sp" />

        <TextView
            android:id="@+id/memberphonetextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignTop="@+id/invitememberLayout2"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="30dp"
            android:paddingLeft="85dp"
            android:text="Phone Number"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textStyle="bold" />

        <EditText
            android:id="@+id/memberuserphonenumber"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:hint="                    Only digits allowed"
            android:inputType="phone"
            android:maxLength="10"
            android:textSize="16sp" />

        <Button
            android:id="@+id/invitebtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignTop="@+id/createteamLayout2"
            android:layout_marginLeft="80dp"
            android:layout_marginTop="20dp"
            android:onClick="onInviteMember"
            android:text="Invite Member" />

    </LinearLayout>

    <LinearLayout
        android:id="@+id/invitememberLayout4"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="370dp"
        android:gravity="center"
        android:orientation="horizontal"
        android:weightSum="2">

        <Button
            android:id="@+id/Donebtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:layout_weight="1"
            android:onClick="onDonebtn"
            android:text="Done" />

        <Button
            android:id="@+id/Exitbtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:onClick="onExitbtn"
            android:text="Exit" />

    </LinearLayout>
</RelativeLayout>

它完成了。

答案 1 :(得分:0)

因为您为LinearLayout提供了包含垂直方向的按钮,请将其更改为水平

 android:orientation="horizontal"

答案 2 :(得分:0)

在包含2个按钮的LinearLayout中 -

替换 -

android:orientation="vertical"

android:orientation="horizontal"

因为您希望按钮水平排列。

答案 3 :(得分:0)

LinearLayout中的方向意味着一个又一个

所以不要在最后一个LinearLayout中使用orientation vertical:

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="370dp"
        android:orientation="horizontal"
        android:id="@+id/invitememberLayout4">

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Done"
            android:id="@+id/Donebtn"
            android:onClick="onDonebtn"
            android:layout_gravity="right" />

        <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Exit"
        android:id="@+id/Exitbtn"
        android:onClick="onExitbtn"/>

    </LinearLayout>

答案 4 :(得分:0)

或者您可以通过其他方式更改LinearLayout,使用RelativeLayout这样的按钮

 <RelativeLayout
        android:id="@+id/invitememberLayout4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="370dp">

        <Button
            android:id="@+id/Donebtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="onDonebtn"
            android:layout_alignParentRight="true"
            android:text="Done"/>

        <Button
            android:id="@+id/Exitbtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="onExitbtn"
            android:layout_alignParentLeft="true"
            android:text="Exit"/>

    </RelativeLayout>

答案 5 :(得分:0)

在包含完成和退出的最后一个linearlayout中。设置 -

android:orientation="Horizontal"

让我知道它是否对你有所帮助。

答案 6 :(得分:0)

在上一个LinearLayout中添加android:orientation="horizontal"。如果你想左右对齐这两个按钮,我建议你使用RelativeLayout而不是LinearLayout。

答案 7 :(得分:0)

试试这个:

Async