如何获得按钮的高度以匹配另一个元素的高度?

时间:2010-11-15 21:13:08

标签: android layout height match

我想在EditText旁边放一个按钮,我希望它们的高度匹配。

例如,来自内置的Android浏览器:

alt text

Go按钮与EditText字段的高度相同。我知道我可以在父布局视图中包装这两个视图,并将它们的高度设置为fill_parent,这将使它们匹配。但是,我想这样做而不必给布局一个静态大小。我希望EditText根据字体大小获取所需的任何高度,然后让它旁边的按钮匹配任何可能的高度。

这是否可以使用xml布局?

4 个答案:

答案 0 :(得分:65)

据推测,EditTextButton位于RelativeLayout内。将按钮的布局属性设置为alignTop的{​​{1}}和alignBottom

答案 1 :(得分:27)

您需要在其高度上设置EditText wrap_content,并Button只有fill_parent。您需要将它们都包裹在Layout父级中。这样他们就会与同一个Layout父母相关联。

尝试一下,看看它是如何工作的,如果它有帮助让我知道。如果不是,我可能会给你一些可以帮助你的代码。

答案 2 :(得分:16)

你想要的是相对布局。一些评论的例子如下

我们从这个 RelativeLayout 开始作为父母。这可以包装所有内容。 在那个父级中,我们放置了2个元素,即示例中的button和editText。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

我们首先将Button元素放在右上角。这就是 layout_alignParentRight layout_alignParentTop 的全部内容。同样,这是最大的元素,因此我们将使用 wrap_content 为高度和宽度包装所有内容。

<Button
    android:id="@+id/Button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:text="some_text" />

现在第二个元素,我们想要与前一个元素左侧对齐的editText,使用带有 layout_toLeftOf 参数的id引用来实现这一点。

<EditText
    android:id="@+id/EditText1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_toLeftOf="@+id/Button1"
    android:hint="some_hint"
    android:inputType="textCapWords" />

关闭RelativeLayout,现在渲染它,看看你可能已经得到了什么。

</RelativeLayout>

enter image description here

由于editText的高度较小,因此它与旁边的Button不匹配。解决方案是添加一些布局参数。您正在寻找的神奇之处是 layout_alignBottom layout_alignParentTop

   android:layout_alignBottom="@+id/Button1"
    android:layout_alignParentTop="true"

添加这两个,你就可以正确布局了。

enter image description here

答案 3 :(得分:0)

通过 ConstraintLayout的简介,使用match-constraint属性

使此任务变得更加简单。