2010-11-15 112 views
51

我想把一個按鈕放在EditText旁邊,我希望他們的高度匹配。如何獲得按鈕的高度以匹配另一個元素的高度?

例如,從內置在Android瀏覽器:

alt text

GO按鈕是相同的高度的EditText字段。我知道我可以在父佈局視圖中包裝這兩個視圖,並將它們的高度設置爲fill_parent,並且這將使它們匹配。不過,我想這樣做,而不必給佈局一個靜態的大小。我寧願讓EditText根據字體大小採取任何需要的高度,然後讓它旁邊的按鈕匹配可能的高度。

這可能與一個XML佈局?

+1

這個問題需要進行更新,以包括新ConstraintLayout。 – 2017-10-05 20:22:08

回答

27

您將需要使其高度爲EditTextwrap_content並且Button只是fill_parent。您需要將它們都包裝在父母的Layout中。這樣他們與同一個Layout家長相關聯。

嘗試一下,看看它是如何工作的,如果它有助於讓我知道。如果它不,也許我可以給你一些代碼來幫助你。

+0

謝謝你提供的幫助,但法爾馬裏的答案完美無缺,所以我全部定下來了。再次感謝。 – cottonBallPaws 2010-11-15 21:21:35

+0

實際上,在沒有包裝視圖的情況下嘗試這樣做後,我無法正確排列文本右側的按鈕,因爲我在描述Falmarri答案時所描述的問題。使用你的方法,我能夠獲得按鈕的大小和放置正確​​,所以我會把你的標記作爲答案。 – cottonBallPaws 2010-11-16 05:56:57

57

推測EditTextButtonRelativeLayout之內。將按鈕的佈局屬性設置爲EditTextalignTopalignBottom

+2

這工作很好,不需要包裝,非常感謝你。 – cottonBallPaws 2010-11-15 21:20:35

+2

如何獲取按鈕左側的EditText?我試着在EditText上使用layout_toLeftOf =「button的id」,但是由於Button是在xml文件中的EditText之後聲明的,所以我得到一個錯誤,即該按鈕的id不存在。我無法將它們反轉,因爲我遇到同樣的問題,Button按照您所描述的那樣引用了EditText的id。有關如何處理這個問題的任何建議?謝謝 – cottonBallPaws 2010-11-15 22:24:07

15

你想要的是相對佈局。一些評論的例子如下

我們從這個RelativeLayout作爲父母開始。這可以包裝所有內容。 在那個父類中,我們把2個元素,按鈕和你的例子中的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_alignParentRightlayout_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在高度較小它不會匹配它放在旁邊的按鈕。解決方案是添加更多的佈局參數。你正在尋找的神奇的是layout_alignBottomlayout_alignParentTop

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

添加這兩個,你得到你的佈局的權利。

enter image description here

+0

不適用於線性佈局! – 2015-11-30 07:17:30

+2

@farhan patel這就是爲什麼我開始解釋說你需要一個相對的佈局;-) – hcpl 2015-11-30 08:11:38

相關問題