如何让按钮的高度与另一个元素的高度相匹配?
Posted
技术标签:
【中文标题】如何让按钮的高度与另一个元素的高度相匹配?【英文标题】:How to get a button's height to match another element's height? 【发布时间】:2011-05-10 11:39:49 【问题描述】:我想在 EditText 旁边放一个按钮,我希望它们的高度匹配。
例如,从内置的 android 浏览器:
Go 按钮与 EditText 字段的高度相同。我知道我可以将这两个视图包装在父布局视图中,并将它们的高度都设置为 fill_parent,这样它们就会匹配。但是,我想这样做而不必为布局提供静态大小。我宁愿让 EditText 根据字体大小采用它需要的任何高度,然后让它旁边的按钮匹配可能的任何高度。
这可以通过 xml 布局实现吗?
【问题讨论】:
此问题需要更新以包含新的 ConstraintLayout。 【参考方案1】:大概EditText
和Button
在RelativeLayout
内。将按钮的布局属性设置为EditText
的alignTop
和alignBottom
。
【讨论】:
这很好用,不需要包装,非常感谢。 如何将 EditText 布置在按钮的左侧?我尝试在 EditText 上使用 layout_toLeftOf="the id of the button" 但由于 Button 是在 xml 文件中的 EditText 之后声明的,因此出现按钮 id 不存在的错误。我无法反转它们,因为我有同样的问题,Button 指的是 EditText 的 id 用于您描述的对齐方式。关于如何处理这个问题的任何建议?谢谢【参考方案2】:您需要将EditText
wrap_content
设置在其高度上,并将Button
设置为仅fill_parent
。您需要将它们都包裹在 Layout
父级中。这样它们就与同一个Layout
父级关联。
尝试一下,看看它是如何工作的,如果有帮助,请告诉我。如果不是,也许我可以给你一些代码来帮助你。
【讨论】:
感谢您提供帮助,但 Falmarri 的回答非常有效,所以我准备好了。再次感谢。 实际上,在没有包装视图的情况下尝试执行此操作后,由于我在响应 Falmarri 的回答时描述的问题,我无法让按钮正确排列在文本的右侧。使用您的方法,我能够正确调整按钮的大小和位置,因此我会将您的方法标记为答案。【参考方案3】:您想要的是相对布局。一些cmets的例子如下
我们从这个 RelativeLayout 作为父级开始。这可以包装所有内容。 在该父级中,我们放置了 2 个元素,即您示例中的按钮和 editText。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_ >
我们首先将 Button 元素放在右上角。这就是 layout_alignParentRight 和 layout_alignParentTop 的意义所在。同样,这是最大的元素,所以我们将让它使用 wrap_content 来包装所有内容的高度和宽度。
<Button
android:id="@+id/Button1"
android:layout_
android:layout_
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:text="some_text" />
现在第二个元素,即我们想要对齐到前一个元素左侧的editText,使用带有layout_toLeftOf参数的id引用来完成。
<EditText
android:id="@+id/EditText1"
android:layout_
android:layout_
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"
添加这 2 个,你的布局就正确了。
【讨论】:
@farhan patel 这就是为什么我开始解释说你需要一个相对布局;-)【参考方案4】:有了ConstraintLayout的介绍,这个任务使用match-constraint属性变得简单了很多
【讨论】:
以上是关于如何让按钮的高度与另一个元素的高度相匹配?的主要内容,如果未能解决你的问题,请参考以下文章