Как программно установить атрибут XML 'layout_constrainedWidth' ConstraintLayout? - PullRequest
0 голосов
/ 17 января 2019

В макете ограничения, как преобразовать атрибут xml:

app:layout_constrainedWidth=”true|false”

в коде?

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Я только что понял это.

Итак, основываясь на ответах выше,

constrainedWidth можно получить через ConstraintLayout.LayoutParams и, следовательно, можно изменить с помощью следующего кода: (Спасибо @JeelVankhede)

ConstraintLayout.LayoutParams lp = (ConstraintLayout.LayoutParams) 
myView.getLayoutParams(); // View for which we need to set constrainedWidth.
lp.constrainedWidth = true/false;
myView.setLayoutParams(lp);

Однако при использовании ConstraintsSet потребуется следующий код:

val constraintLayout = // your constraint layout
val constraintSet = ConstraintSet()
constraintSet.clone(constraintLayout)

// This is the imporatant part
constraint.constrainDefaultWidth(R.id.yourViewId, ConstraintSet.MATCH_CONSTRAINT_WRAP)

constraintSet.applyTo(constraintLayout)
0 голосов
/ 17 января 2019

Если вы хотите установить constrainedWidth/Height программно, то вы должны взять ConstraintLayout.LayoutParams для вашего просмотра и установить флаг с именем constrainedWidth или constrainedHeight по вашему желанию.

1009 * Т.е. *

ConstraintLayout.LayoutParams lp = (ConstraintLayout.LayoutParams) myView.getLayoutParams(); // View for which we need to set constrainedWidth.
lp.constrainedWidth = true/false;
myView.setLayoutParams(lp);

constrainedWidth

Укажите, ограничен ли горизонтальный размер в случае, если слева и установлены правильные ограничения и размер виджета не является фиксированным измерение.

По умолчанию, если виджет установлен на WRAP_CONTENT, мы будем рассматривать это измерение как фиксированное измерение , означающее, что измерение будет не меняется независимо от ограничений.

Установка этого атрибута на true позволяет изменить размер для соблюдения ограничений.

Проверьте здесь .

...