Ответ 1
Для использования EditText
android:layout_width="0dp" - not required but preferred.
android:layout_weight="1"
И для кнопки не указывать android:layout_weight
У меня есть 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>
Для использования EditText
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
a maxWidth
. Это должно остановить его от изменения размера за пределы ширины, которую вы предоставили. Кроме того, если вы хотите, чтобы он содержался в пределах 1 строки, установите для параметра maxLines
значение 1.
Просто используйте:
android:layout_width="fill_parent"
для EditText и Button. Он также будет работать для EditText, но лучше иметь его на обоих.
Вам нужно добавить android: imeOptions, чтобы предотвратить это поведение.
вы можете определить размер вашего edittext, как показано выше.
android:minWidth="80dp"
android:maxWidth="80dp"
или
android:layout_width="60dp"
или
вы можете применить фоновое изображение размера, которое вы хотите но не забудьте определить его высоту и ширину с wrap_content.
android:layout_width="wrap_content"
android:layout_height="wrap_content"
У меня была аналогичная проблема, но я не мог заставить выше работать. Что я сделал, это взять текст из поля EditText, а затем отформатировать его до максимального размера, который может обрабатывать мой экран. Когда я сохраню это в БД, я сохраню его как отображение текста и исходного текста.
Если вы перейдете на эту страницу Я добавил более подробное объяснение.
Правильный способ сделать это - установить андроид: minWidth и android: maxWidth, равный требуемой ширине. Таким образом вам не придется настраивать макет для использования android: layout_weight.
Например, если вы хотите, чтобы ваш EditText всегда составлял 80 пикселей плотности, независимо от того, сколько символов вы вводите, используйте следующее:
android:minWidth="80dp"
android:maxWidth="80dp"
У меня был точный запрос. Но у меня был EditText и кнопка рядом друг с другом в линейной компоновке. Я попробовал android: layout_weight = "1" для EditText андроид: layout_width = "0dp" И это просто отлично! Большое спасибо!