Как мне предотвратить изменение размера EditText при вводе пользователем текста?

StackOverflow https://stackoverflow.com/questions/1408781

Вопрос

У меня есть EditText и еще Button устанавливаются рядом друг с другом на одной горизонтальной линии.Это выглядит великолепно, за исключением случаев, когда пользователь вводит много текста, EditText изменяется размер, и Button раздавливается.

У меня есть и то, и другое EditText и Button установлено значение layout_width="wrap_content". "fill_parent" портит макет, и я не хочу использовать абсолютные размеры, если в этом нет необходимости - то, что есть сейчас, отлично смотрится как в альбомной, так и в портретной ориентации, я просто не хочу, чтобы EditText чтобы изменить размер.

Мой макет:

<TableLayout
    android:id="@+id/homelayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <TableRow>
        <TextView
            android:id="@+id/labelartist"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Find artists:" />
    </TableRow>
    <TableRow>
        <EditText
            android:id="@+id/entryartist"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="6"
            android:background="@android:drawable/editbox_background"
            android:editable="true"
            android:padding="5px"
            android:singleLine="true" />
        <Button
            android:id="@+id/okartist"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_marginLeft="10dip"
            android:layout_weight="1"
            android:text="Search" />
    </TableRow>

</TableLayout>
Это было полезно?

Решение

Для редактирования текста используйте

android:layout_width="0dp" - not required but preferred.
android:layout_weight="1"

И для кнопки не указывайте android: layout_weight

Другие советы

То, что я делаю, находится в onCreate для действия, сначала измерьте EditText, затем примените его maxWidth.

Вы можете сделать это, используя код, подобный следующему:

EditText someedittext = (EditText)findViewById(R.id.sometextview);
someedittext.setMaxWidth(someedittext.getWidth());

Дайте EditText maxWidth . Это должно остановить его от изменения размера, который вы указали. Кроме того, если вы хотите, чтобы он содержался в одной строке, установите для параметра maxLines также значение 1.

Просто используйте:

android:layout_width="fill_parent"

для EditText и Button. Он также будет работать для EditText, но лучше иметь его на обоих.

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

Вам нужно добавить android: imeOptions, чтобы предотвратить это поведение.

нажмите здесь

вы можете определить размер вашего редактируемого текста, как показано выше

android:minWidth="80dp"
android:maxWidth="80dp"

или

android:layout_width="60dp"

или

вы можете применить фоновое изображение нужного размера но не забудьте определить его высоту и ширину с помощью wrap_content.

  android:layout_width="wrap_content"
  android:layout_height="wrap_content"

У меня была похожая проблема, но я не мог заставить работать вышеперечисленное. Что я сделал, так это взял текст из поля EditText и затем отформатировал его до максимального размера, который мог бы обрабатывать мой экран. Когда я сохраню это в БД, я сохраню его в качестве отображаемого текста и исходного текста.

Если вы перейдете на эту страницу , я добавлю более подробное объяснение.

Правильный способ сделать это - установить значения android: minWidth и android: maxWidth равные ширине, которую вы хотите. Таким образом, вам не придется настраивать макет для использования Android: layout_weight.

Например, если вы хотите, чтобы ваш EditText всегда составлял 80 пикселей плотности, независимо от того, сколько символов вы вводите, используйте следующее:

android:minWidth="80dp"
android:maxWidth="80dp"

У меня был точный запрос. Но у меня был EditText и кнопка рядом друг с другом в линейном макете. Я пробовал android: layout_weight = " 1 " для EditText         Android: layout_width = & Quot; 0dp & Quot; И это сработало просто отлично! Большое спасибо!

Выбранное решение работает, но позвольте мне добавить небольшое дополнение:
если вы используете android: layout_weight = " 0,15 " (значение не важно)
затем
android: layout_width = " 0dp " , если LinearLayout установлен по горизонтали
или
android: layout_height = " 0dp " , если LinearLayout установлен вертикально.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top