Как получить высоту кнопки, чтобы соответствовать высоте другого элемента?
Я хочу поместить кнопку рядом с EditText, и я хочу, чтобы их высоты совпадали.
например, из встроенного браузера Android:
кнопка 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>
поскольку editText меньше по высоте, он не будет соответствовать кнопке, рядом с которой он помещен. Решение для этого-добавить еще несколько параметров макета. Волшебные те, которые вы ищете layout_alignBottom и layout_alignParentTop.
android:layout_alignBottom="@+id/Button1"
android:layout_alignParentTop="true"
добавьте эти 2, и вы получите правильный макет.