it-swarm.com.ru

Как предотвратить изменение размера 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>
48
alex_c

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

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

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

87
bhatt4982

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

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

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

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

5
Prashast

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

Android:layout_width="fill_parent"

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

2
Kamen

 enter image description here

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

Кликните сюда

2
Dhina k

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

Android:minWidth="80dp"
Android:maxWidth="80dp"

или же 

Android:layout_width="60dp"

или же

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

  Android:layout_width="wrap_content"
  Android:layout_height="wrap_content"
1
Android developer

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

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

Android:minWidth="80dp"
Android:maxWidth="80dp"
0
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

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

0
josedacruz

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

0
Shruti Dasgopal

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

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

0
Aaron