Подтвердить что ты не робот

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

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

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

alt text

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

Предположительно, EditText и Button находятся внутри RelativeLayout. Задайте атрибуты макета кнопки alignTop и alignBottom EditText.

Ответ 3

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

Мы начинаем с этого 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_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