Проблема с набором ограничений, невозможно решить проблему

Я расширил ConstraintLayout и программно добавил представления, а затем установил ограничение для каждого представления. но каким-то образом он не работает, отображается только первое представление. Не могу понять, где я ошибся.

addViews(){
        titleInfoView = new TextView(getContext());
        titleInfoView.setId(ViewCompat.generateViewId());
        addView(titleInfoView);

        editBoxView = new EditText(contextWrapper);
        editBoxView.setId(ViewCompat.generateViewId());
        addView(editBoxView);

        notInfoView = new TextView(getContext());
        notInfoView.setId(ViewCompat.generateViewId());
        addView(notInfoView);
    
        errorMessageView = new TextView(getContext());
        errorMessageView.setId(ViewCompat.generateViewId());
        addView(errorMessageView);

}

Затем добавляем ограничение к каждому виду

 private void addConstraintToViews() {
     
        ConstraintSet set = new ConstraintSet();
        set.clone(this);

        //connect title view
        set.connect(titleInfoView.getId(), ConstraintSet.TOP, ConstraintSet.PARENT_ID, ConstraintSet.TOP);
        set.connect(titleInfoView.getId(), ConstraintSet.START, ConstraintSet.PARENT_ID, ConstraintSet.START);
        set.connect(titleInfoView.getId(), ConstraintSet.END, ConstraintSet.PARENT_ID, ConstraintSet.END);


        //connect edit box
        set.connect(editBoxView.getId(), ConstraintSet.TOP, titleInfoView.getId(), ConstraintSet.BOTTOM, R.dimen.margin_10);
        set.connect(editBoxView.getId(), ConstraintSet.START, ConstraintSet.PARENT_ID, ConstraintSet.START);
        set.connect(editBoxView.getId(), ConstraintSet.END, ConstraintSet.PARENT_ID, ConstraintSet.END);

        //connect info title
        set.connect(notInfoView.getId(), ConstraintSet.TOP, editBoxView.getId(), ConstraintSet.BOTTOM, R.dimen.margin_10);
        set.connect(notInfoView.getId(), ConstraintSet.START, ConstraintSet.PARENT_ID, ConstraintSet.START);
        set.connect(notInfoView.getId(), ConstraintSet.END, ConstraintSet.PARENT_ID, ConstraintSet.END);

        //connect error messag
        set.connect(errorMessageView.getId(), ConstraintSet.TOP, notInfoView.getId(), ConstraintSet.BOTTOM, R.dimen.margin_10);
        set.connect(errorMessageView.getId(), ConstraintSet.START, ConstraintSet.PARENT_ID, ConstraintSet.START);
        set.connect(errorMessageView.getId(), ConstraintSet.END, ConstraintSet.PARENT_ID, ConstraintSet.END);
        set.connect(errorMessageView.getId(), ConstraintSet.BOTTOM, ConstraintSet.PARENT_ID, ConstraintSet.BOTTOM);

        set.applyTo(this);
    }

Отображается только первый элемент, это заголовок, как на этом изображении. Я хочу добавить каждое представление одно за другим, и то, как я написал набор ограничений. Может ли кто-нибудь подсказать, что происходит не так.

1 ответ

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

Кажется, это проблема, может быть какая-то ошибка в макете ограничений. Просто удалил это поле, теперь виды отображаются.

Другие вопросы по тегам