Подтвердить что ты не робот

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

У меня есть 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>
4b9b3361

Ответ 1

Для использования EditText

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

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

Ответ 2

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

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

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

Ответ 3

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

Ответ 4

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

android:layout_width="fill_parent"

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

Ответ 5

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

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

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

Ответ 6

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

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

или

android:layout_width="60dp"

или

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

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

Ответ 7

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

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

Ответ 8

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

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

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

Ответ 9

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