Я проектирую пользовательский интерфейс своего приложения. Мне нужен макет выглядит так:
(<и> - кнопки). Проблема в том, что я не знаю, как убедиться, что TextView заполнит оставшееся пространство, две кнопки имеют фиксированный размер.
Если я использую fill_parent для просмотра текста, вторая кнопка (>) не может быть отображена.
Как я могу создать макет, который выглядит как изображение?
android
layout
android-layout
Люк Во
источник
источник
Ответы:
Ответ от woodshy работал для меня, и это проще, чем ответ Унгуряну Ливиу, поскольку он не использует
RelativeLayout
. Я даю свой макет для ясности:источник
alignLeft
иalignParentLeft
, и т. Д., Которые никогда не могут быть достигнутыLinearLayout
.В случае если <TEXT VIEW> помещен в LinearLayout, установите для свойства Layout_weight для <и> значение 0 и 1 для TextView.
В случае RelativeLayout выровняйте <и> по левому и правому краям и установите для свойства «Макет слева от» и «Макет справа от» TextView идентификаторы <и>
источник
Если вы используете
RelativeLayout
, вы можете сделать это примерно так:источник
>
кнопки?Используя
ConstraintLayout
, я нашел что-то вродеработает. Ключ устанавливает правильные ограничения для правого, левого, верхнего и нижнего краев, затем устанавливает ширину и высоту
0dp
и позволяет ему определить свой собственный размер.источник
TextView
есть левые и правые ограничения. ЗначениеTextView
не растягивается, если первоеButton
имеет правое ограничение для,TextView
а последнееButton
имеет левое ограничение дляTextView
.Это просто Вы устанавливаете minWidth или minHeight, в зависимости от того, что вы ищете, горизонтальный или вертикальный. А для другого объекта (того, которым вы хотите заполнить оставшееся пространство) вы устанавливаете вес 1 (установите ширину, чтобы обернуть его содержимое), поэтому он заполнит остальную часть области.
источник
Вы можете использовать высокий атрибут layout_weight. Ниже вы можете увидеть макет, где ListView занимает все свободное место с кнопками внизу:
источник
Для тех, у кого такой же глюк,
<LinearLayout...>
как и у меня:Важно указать
android:layout_width="fill_parent"
, он не будет работатьwrap_content
.OTOH, вы можете опустить
android:layout_weight = "0"
, это не требуется.Мой код в основном совпадает с кодом в https://stackoverflow.com/a/25781167/755804 (автор Vivek Pandey)
источник
Вам следует избегать вложения 2 относительного расположения, так как относительное расположение всегда делает 2 прохода для рисования (против 1 для любого другого типа расположения). Это становится экспоненциальным, когда вы их вкладываете. Вы должны использовать линейный макет с шириной = 0 и весом = 1 для элемента, который вы хотите заполнить оставшееся пространство. Этот ответ лучше для производительности и практики. Помните: используйте относительное расположение ТОЛЬКО тогда, когда у вас нет другого выбора.
источник
Вы можете использовать установить
layout_width
илиlayout_width
в0dp
(По ориентации вы хотите заполнить оставшееся пространство). Затем используйте,layout_weight
чтобы заполнить оставшееся пространство.источник
используйте Relativelayout для переноса LinearLayout
источник
я нашел
источник
При использовании относительного макета вы можете растянуть вид, привязав его к обоим видам, к которым он должен быть растянут. Хотя указанная высота не будет учитываться, Android по-прежнему требует атрибута высоты, поэтому я написал «0dp». Пример:
источник