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

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

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

Alt text

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

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

Вам нужно будет сделать 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" > 

Начнем с размещения элемента 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> 

Введите описание изображения здесь

Поскольку editText меньше по высоте, он не будет соответствовать кнопке, на которой она расположена рядом. Решение состоит в том, чтобы добавить еще несколько параметров компоновки. Магическими, которые вы ищете, являются layout_alignBottom и layout_alignParentTop .

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

Добавьте их 2, и вы правильно настроите свой макет.

Введите описание изображения здесь