Как получить высоту кнопки, чтобы соответствовать высоте другого элемента?

Я хочу поместить кнопку рядом с EditText, и я хочу, чтобы их высоты совпадали.

например, из встроенного браузера Android:

alt text

кнопка Go имеет ту же высоту, что и поле EditText. Я знаю, что могу обернуть оба этих вида в родительский вид макета и установить обе их высоты в fill_parent, и это сделает их совпадающими. Однако я хотел бы сделать это без необходимости придавать макету статический размер. Я бы скорее EditText принимает любую высоту, которая ему нужна, на основе размера шрифта, а затем имеет кнопку рядом с ним, соответствующую любой высоте.

возможно ли это с помощью XML-макета?

3 ответов


вам нужно будет сделать EditText wrap_content на своей высоте и имеют Button просто fill_parent. Вам нужно будет иметь их обоих завернутыми в Layout родитель. Таким образом, они связаны с одним и тем же Layout родитель.

попробуйте и посмотрите, как это работает, если это поможет, дайте мне знать. Если это не возможно, я могу дать вам код, который поможет вам.


предположительно EditText и Button внутри RelativeLayout. Установите атрибуты макета кнопки в alignTop и alignBottom на EditText.


то, что вы хотите, это относительный макет. Пример с некоторыми комментариями выглядит следующим образом

начнем с этого 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" >

мы начинаем с размещения элемента кнопки в правом верхнем углу. Вот что такое 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, который мы хотим выровнять с левой стороны нашего предыдущего элемента, используйте ссылку id с layout_toLeftOf параметр для выполнения именно этого.

<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_alignBottom и layout_alignParentTop.

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

добавьте эти 2, и вы получите правильный макет.

enter image description here