如何在LinearLayout中水平对齐元素?

时间:2014-05-25 02:19:25

标签: android android-layout android-linearlayout android-layout-weight

enter image description here

我无法控制LinearLayout的高度。这些不能正确对齐并且不会填满宽度。我希望分隔符位于中心,两侧的按钮都在中间。这是我的代码:

<LinearLayout
    android:id="@+id/buttonFieldsLayout"
    android:orientation="horizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/loginFieldsLayout" >

    <Button
        android:id="@+id/signUpButton"
        style="@style/AuthButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/sign_up_button_label" />

    <View
        android:id="@+id/buttonDivider"
        android:layout_width="1dp"
        android:layout_height="wrap_content"
        android:background="@drawable/divider" />

    <Button
        android:id="@+id/cancelButton"
        style="@style/AuthButton"
        android:text="@string/cancel_button_label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

divider.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<gradient 
    android:startColor="@color/white"
    android:centerColor="@color/blue"
    android:endColor="@color/white" />
</shape>

更新1:

在@Onik的建议

之后,

观点仍然存在

enter image description here

更新2:

我删除了View元素,并在LinearLayout中添加了此代码,但它确实有效!

android:divider="@drawable/divider"
android:showDividers="middle"

注意: android:divider属性仅在Android 3.0(API级别11)或更高版本中可用。

实际上这个链接帮助了我并展示了放置分隔符的正确方法:How to add (vertical) divider to a horizontal LinearLayout?

2 个答案:

答案 0 :(得分:3)

您需要为layout_weight使用Buttons属性。要防止divider填充布局的高度(如图片中屏幕的整个高度),请使用layout_height="match_parent"代替layout_height="wrap_content"。这将填充屏幕(或父级)的宽度,并将button's宽度设置为相等,其中divider的高度相同:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/buttonFieldsLayout"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/loginFieldsLayout" >

<Button
    android:id="@+id/signUpButton"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:text="sign_up_button_label" />

<View
    android:id="@+id/buttonDivider"
    android:layout_width="1dp"
    android:layout_height="match_parent"
    android:background="@drawable/divider" />

<Button
    android:id="@+id/cancelButton"
    android:text="cancel_button_label"
    android:layout_weight="1"
    android:layout_width="0dp"
    android:layout_height="wrap_content" />

答案 1 :(得分:1)

使用RelativeLayout代替android:layout_width="match_parent"

对于分隔符,请设置android:layout_centerHorizontal="true"

对于按钮,请设置:

android:layout_toRightOf="@id/buttonDivider"

...和...

android:layout_toLeftOf="@id/buttonDivider"