Intereting Posts
Как не загорать PhoneStateListener.CALL_STATE_RINGING, если уже разговаривает, и второй вызывающий звонит (Java / Android) Вычислить дни между двумя датами и представить результат в определенном формате Внешнее распределение слишком велико для этого процесса в Android Как запустить javascript в фоновом режиме? FileProvider не работает с камерой Android Studio: как подключить Android SDK-источники? Не удается заставить Vitamio VideoView воспроизводить видеофайлы, которые будут играть обычные Android VideoView Аппаратное ускорение не включено Частный провайдер контента Android? Удалите «Нет данных диаграммы» из MPAndroidChart и добавьте мое собственное сообщение Java.lang.SecurityException: попытка чтения gservices без разрешения Область измерения неправильного многоугольника в android Нарисуйте прозрачный круг на заполненном андроидном холсте Внедрить Swipe в ListView Android Использование списка слоев для выбора кнопок

Как программно добавлять представления и ограничения в ConstraintLayout?

У меня возникла проблема с программным добавлением представлений в макет Constraint Layout и настройка всех ограничений, необходимых для работы макета.

То, что у меня сейчас, не работает:

ConstraintLayout layout = (ConstraintLayout) findViewById(R.id.mainConstraint); ConstraintSet set = new ConstraintSet(); set.clone(layout); ImageView view = new ImageView(this); layout.addView(view,0); set.connect(view.getId(), ConstraintSet.TOP, layout.getId(), ConstraintSet.TOP, 60); set.applyTo(layout); 

ImageView даже не отображается на макете. Добавляя RelativeLayout , он работает как шарм.

Что я могу сделать для создания необходимых мне ограничений, чтобы мой макет снова работал?

Я думаю, вы должны клонировать макет после добавления ImageView.

 ConstraintLayout layout = (ConstraintLayout)fndViewById(R.id.mainConstraint); ConstraintSet set = new ConstraintSet(); ImageView view = new ImageView(this); layout.addView(view,0); set.clone(layout); set.connect(view.getId(), ConstraintSet.TOP, layout.getId(), ConstraintSet.TOP, 60); set.applyTo(layout);