Android LinearLayout ширина заполнения - PullRequest
8 голосов
/ 03 июня 2011

Мне интересно, почему это происходит:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="fill_parent"
    android:gravity="center_vertical"
    android:layout_height="wrap_content" android:layout_gravity="top"
    android:background="@drawable/gradient" android:focusable="true"
    android:paddingTop="5dip" android:paddingBottom="5dip"
    android:focusableInTouchMode="true">
        <EditText android:id="@+id/searchField"
            android:layout_width="wrap_content" android:layout_height="fill_parent"

            android:paddingTop="2dip" android:paddingBottom="2dip"
            android:paddingLeft="10dip" android:paddingRight="10dip"
            android:inputType="textVisiblePassword" android:radius="5dip"
            android:layout_marginLeft="10dip"
            android:background="@drawable/search_background" android:textColor="#000000" />

        <Button android:id="@+id/info" android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dip"
            android:background="@drawable/info_btn" />
</LinearLayout>

Если я установлю "fill_parent" в layout_width моего EditText, он займет всю ширину родительского элемента, и кнопка исчезнет (я думаю, она скрыта ниже EditText).

Кто-нибудь может мне объяснить? Я хотел бы, чтобы кнопка занимала свою собственную ширину, а EditText - оставшуюся ширину.

1 Ответ

24 голосов
/ 03 июня 2011

Вы указываете EditText для fill_parent, поэтому он заполняет экран (всю ширину, не оставляя места для вашей кнопки).

Вы хотите, чтобы кнопка переносила свое содержимое, а текст редактирования заполнял оставшуюся часть, вы можете сделать это, используя свойство layout_weight:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:layout_gravity="top"
 android:gravity="center_vertical"
 android:paddingTop="5dip"
 android:paddingBottom="5dip"
 android:orientation="horizontal">
<EditText
    android:id="@+id/searchField"
    android:layout_width="0dip"
    android:layout_height="fill_parent"
    android:layout_weight="1"
    android:layout_marginLeft="10dip"
    android:paddingTop="2dip"
    android:paddingBottom="2dip"
    android:paddingLeft="10dip"
    android:paddingRight="10dip"
    android:radius="5dip"
    android:inputType="textVisiblePassword"
    android:textColor="#000000" />
<Button
    android:id="@+id/info"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="10dip"
    android:text="Blah" />
</LinearLayout>

(я взял ваши нарисованные ссылки, чтобы сделать его универсальным для других людей)

С одной стороны, чтобы ваш XML не выглядел хорошоаккуратный и удобный в затмении:

Окно> Настройки> XML> XML-файлы> Редактор

Ширина строки 120

Разделение нескольких атрибутов TICK

Выровнять окончательную скобку UNTICK

Сохранить пустые теги в PCDATA UNTICK

Очистить все пустые строки UNTICK

Вставить пробел перед закрытием TICK

Нажать ok

Затем вы можете исправить свои XML-файлы, если у вас есть XML-файл, откройте CTRL + A, а затем CTRL + SHIFT + F отформатирует его!

...