我想在EditText旁边放一个按钮,我希望它们的高度匹配。
例如,来自内置的Android浏览器:
Go按钮与EditText字段的高度相同。我知道我可以在父布局视图中包装这两个视图,并将它们的高度设置为fill_parent,这将使它们匹配。但是,我想这样做而不必给布局一个静态大小。我希望EditText根据字体大小获取所需的任何高度,然后让它旁边的按钮匹配任何可能的高度。
这是否可以使用xml布局?
答案 0 :(得分:65)
据推测,EditText
和Button
位于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>
由于editText的高度较小,因此它与旁边的Button不匹配。解决方案是添加一些布局参数。您正在寻找的神奇之处是 layout_alignBottom 和 layout_alignParentTop 。
android:layout_alignBottom="@+id/Button1"
android:layout_alignParentTop="true"
添加这两个,你就可以正确布局了。
答案 3 :(得分:0)
通过 ConstraintLayout的简介,使用match-constraint属性
使此任务变得更加简单。