С Preview 1 Android Studio 2.2 Google выпустил новую компоновку в библиотеке поддержки: ConstraintLayout
. С ConstraintLayout проще использовать инструмент «Дизайн» в Android Studio, но я не нашел способа использовать относительные размеры (проценты или «веса», как в LinearLayout). Есть ли способ определить ограничения на основе процентов? Например, сделать вид занимающим 40% экрана, создать 20% поля между видами, установить ширину вида на 50% ширины другого вида?
android
android-support-library
android-constraintlayout
Юрий Федоров
источник
источник
version 1.1
ConstraintLayout. См. «Процентное измерение» на developer.android.com/reference/android/support/constraint/… или некоторые новые ответы.Ответы:
В настоящее время вы можете сделать это несколькими способами.
Одним из них является создание направляющих (щелкните правой кнопкой мыши область дизайна, затем нажмите «Добавить вертикальную / горизонтальную направляющую»). Затем вы можете щелкнуть «заголовок» руководства, чтобы изменить позиционирование на процентное соотношение. Наконец, вы можете ограничить взгляды руководящими принципами.
Другим способом является позиционирование вида с использованием смещения (в процентах), а затем привязка других видов к этому виду.
Тем не менее, мы думали о том, как предложить процентные измерения. Я не могу давать никаких обещаний, но мы хотели бы добавить это.
источник
app:layout_constraintGuide_percentage
Это может быть полезно иметь краткую ссылку здесь.
Размещение просмотров
Используйте руководство с
app:layout_constraintGuide_percent
таким образом:И затем вы можете использовать это руководство в качестве опорных точек для других видов.
или
Используйте смещение с
app:layout_constraintHorizontal_bias
и / илиapp:layout_constraintVertical_bias
для изменения местоположения просмотра, когда доступное пространство позволяетРазмер просмотров
Другим процентным значением является высота и / или ширина элементов, с
app:layout_constraintHeight_percent
и / илиapp:layout_constraintWidth_percent
:источник
0dp
используется в ConstraintLayout для указания динамического размера. См developer.android.com/reference/android/support/constraint/...1dp
, нет0dp
.. это то, о чем я говорю0dp
уже зарезервировано, так что1dp
кажется разумным.Начиная с «ConstraintLayout1.1.0-beta1» вы можете использовать проценты для определения ширины и высоты.
Это определит ширину, равную 40% ширины экрана. Комбинация этого и руководящих указаний в процентах позволяет вам создать любой макет на основе процентов, который вы хотите.
источник
version 1.1
ConstraintLayout. На_default="percent"
стабильной версии больше не нужно! См «Процентное измерение» на developer.android.com/reference/android/support/constraint/...sp
единицах, как размер текста может быть автоматически пропорционален размеру представления (который сам по себе определяется пропорционально общему размеру макета, то есть в процентах) ?С новым выпуском ConstraintLayout v1.1 вы можете сделать следующее:
Это ограничит кнопку на 20% высоты и 65% ширины родительского вида.
источник
sp
единицах, как размер текста может быть автоматически пропорционален размеру представления (который сам по себе определяется пропорционально общему размеру макета, то есть в процентах) ?Как пользоваться Руководством
В принятом ответе немного неясно, как использовать руководящие принципы и что такое «заголовок».
меры
Сначала добавьте Руководство.
Выберите Guidline или переместите его немного, чтобы сделать ограничения видимыми.
Затем нажимайте на круглый круг («заголовок»), пока он не станет процентным. Затем вы можете перетащить этот процент до 50% или как хотите.
После этого вы можете ограничить свой вид Руководством, чтобы сделать его некоторым процентом от родителя (используя
match_constraint
в представлении).источник
Руководство бесценно - и app: layout_constraintGuide_percent - отличный друг ... Однако иногда нам нужны проценты без рекомендаций. Теперь можно использовать веса :
Вот более полный пример, который использует руководство с дополнительными весами :
источник
При использовании ConstraintLayout v1.1.2 для измерения следует установить значение,
0dp
а затем для атрибутовlayout_constraintWidth_percent
orlayout_constraintHeight_percent
установить значение от 0 до 1, например:(Вам не нужно устанавливать
app:layout_constraintWidth_default="percent"
илиapp:layout_constraintHeight_default="percent"
с ConstraintLayout 1.1.2 и последующими версиями)источник
Constraint Layout 1.0 заставляет представление занимать процент экрана, требуемого, делая два руководства. В Constraint Layout 1.1 это было сделано проще, позволяя вам легко ограничить любое представление шириной или высотой в процентах.
Разве это не фантастика? Все представления поддерживают атрибуты layout_constraintWidth_percent и layout_constraintHeight_percent. Это приведет к тому, что ограничение будет зафиксировано в процентах от доступного пространства. Таким образом, расширение Button или TextView до процента экрана может быть выполнено с помощью нескольких строк XML.
Например, если вы хотите установить ширину кнопки на 70% экрана, вы можете сделать это следующим образом:
Обратите внимание, что вам нужно будет указать, что размер должен использоваться в процентах от 0dp, как мы указали для android: layout_width to 0dp выше.
Точно так же, если вы хотите установить высоту кнопки на 20% экрана, вы можете сделать это следующим образом:
Видеть! на этот раз мы указали для android: layout_height значение 0dp, поскольку хотим, чтобы кнопка использовала высоту в процентах.
источник
Попробуйте этот код. Вы можете изменить процент высоты и ширины с помощью app: layout_constraintHeight_percent и app: layout_constraintWidth_percent.
Gradle:
источник
Вы можете использовать
app:layout_constraintVertical_weight
его так же, какlayout_weight
вlinearlayout
ПРИМЕЧАНИЕ:
app:layout_constraintVertical_weight
(app:layout_constraintHorizontal_weight
) будет работать сandroid:layout_width="0dp"
(android:layout_height="0dp"
источник
Для кого-то, кто может оказаться полезным, вы можете использовать
layout_constraintDimensionRatio
im любого дочернего представления внутри a,ConstraintLayout
и мы можем определить высоту или ширину как отношение другого измерения (по крайней мере, одно должно быть 0dp ширина или высота) примерв этом случае соотношение сторон 16: 9
app:layout_constraintDimensionRatio="16:9"
вы можете найти больше информации ЗДЕСЬисточник
Я знаю, что это не то, о чем изначально изначально просил OP, но это очень помогло мне в этой ситуации, когда у меня был похожий вопрос. Добавление этого для людей, желающих изменить размер окна макета (который я использую регулярно), с помощью кода , Добавьте это к вашему onCreate в активности вопроса. (Изменяет до 80%)
источник
Просто замените в своем теге
с участием
где 0,7 означает 70%.
Также, если вы сейчас попытаетесь перетащить направляющие, перетаскиваемое значение будет отображаться в% age.
источник
Используя рекомендации, вы можете изменить позиционирование в процентах
Вы также можете использовать этот способ
источник