【问题标题】:How to align elements horizontally within a LinearLayout?如何在 LinearLayout 中水平对齐元素?
【发布时间】:2015-09-30 21:31:39
【问题描述】:

我无法控制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 的建议之后,视图仍然突出

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

【问题讨论】:

  • 如果你这样做,使外部 LinearLayout layout_width="fill_parent" 和内部按钮 layout_width="0dp",你应该很好。如果这让您陷入困境,我希望看到该代码,并很乐意提供进一步的帮助。

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


【解决方案1】:

您需要为Buttons 使用layout_weight 属性。为防止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" />

【讨论】:

    【解决方案2】:

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

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

    对于按钮,设置:

    android:layout_toRightOf="@id/buttonDivider"
    

    ...还有...

    android:layout_toLeftOf="@id/buttonDivider"
    

    【讨论】:

      猜你喜欢
      • 2014-01-10
      • 1970-01-01
      • 2015-07-02
      • 1970-01-01
      • 2013-03-12
      • 1970-01-01
      • 2012-10-23
      • 2018-03-28
      • 2013-03-12
      相关资源
      最近更新 更多