Как получить высоту кнопки, чтобы соответствовать высоте другого элемента?
Я хочу поставить кнопку рядом с EditText, и я хочу, чтобы их высоты совпадали.
Например, из встроенного браузера Android:
![alt text]()
Кнопка Go имеет ту же высоту, что и поле EditText. Я знаю, что смогу обернуть оба эти представления в представлении макета родителя и установить их высоту в fill_parent, и это сделает их совпадающими. Тем не менее, я хотел бы сделать это, не придавая макету статический размер. Я предпочел бы, чтобы EditText занимал любую нужную высоту на основе размера шрифта, а затем рядом с ним соответствовала высота, которая могла бы быть.
Возможно ли это с помощью xml-макета?
Ответы
Ответ 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]()