Android - элементы пользовательского интерфейса уходят с экрана - PullRequest
6 голосов
/ 01 июня 2010

У меня проблемы с расположением элементов макета. Автозаполнение в моем TableLayout и кнопка после него расширяют TableRow больше ширины экрана У кого-нибудь есть идея, почему? Ниже приведен мой XML-код, а также картина проблемы.

Заранее спасибо !!

<?xml version="1.0" encoding="utf-8"?>

<TableRow android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <AutoCompleteTextView android:id="@+id/installation"
        android:textSize="14sp" android:completionThreshold="3" />
</TableRow>
<TableRow android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <Button android:id="@+id/btn_find" android:text="@string/btn_find"></Button>
</TableRow>
<TableRow android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <TextView android:id="@+id/error" android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:paddingTop="20px"
        android:textColor="#FF0000" />
</TableRow>

Изображение пользовательского интерфейса

Ответы [ 2 ]

39 голосов
/ 18 июня 2011

Для тех, кому нужен макет таблицы, используйте параметр layout_weight. Смотрите код ниже.

        <TableLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:padding="6sp" android:id="@+id/detailsLayout">
            <TableRow
                android:layout_width="wrap_content"
                android:id="@+id/TableRow03"
                android:layout_height="wrap_content">
                <TextView
                    android:id="@+id/TextView06"
                    android:layout_height="wrap_content"
                    android:layout_width="wrap_content"
                    android:text="Detail 1"></TextView>
                <TextView
                    android:text="@string/empty_value"
                    android:layout_height="wrap_content"
                    android:layout_width="wrap_content"
                    android:id="@+id/sessionAudience"
                    android:layout_weight="1"></TextView>
            </TableRow>
         </TableLayout>
5 голосов
/ 02 июня 2010

По умолчанию виджеты в TableRow имеют android:layout_width="wrap_content". Это не ограничивает вас размером экрана - wrap_content означает «перенос содержимого», а не «перенос содержимого, но, пожалуйста, не уходите за край экрана, если вы не против».

В этом случае вам не нужно использовать TableLayout и набор TableRows, поскольку у вас нет таблицы.

Итак, один из подходов состоит в том, чтобы использовать RelativeLayout, а ваши AutoCompleteTextView использовать android:layout_alignParentLeft="true" и android:layout_alignParentRight="true". Это прикрепит его к внешним краям RelativeLayout, размер которого можно изменить с помощью android:layout_width=fill_parent, чтобы заполнить экран.

...