Установка ограничений программным способом через constraintSet приводит к исчезновению представлений - PullRequest
0 голосов
/ 20 марта 2020

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

ConstraintLayout myLayout= getActivity().findViewById(R.id.myID);
myLayout.removeAllViews();

ConstraintSet constraintSet = new ConstraintSet();

CheckBox cb = new CheckBox(myLayout.getContext());
cb.setText("CHECKBOX");
cb.setId(View.generateViewId());

myLayout.addView(cb);

constraintSet.connect(cb.getId(),ConstraintSet.END,myLayout.getId(),ConstraintSet.END);
constraintSet.connect(cb.getId(),ConstraintSet.TOP,myLayout.getId(),ConstraintSet.TOP);

constraintSet.applyTo(myLayout);

Ответы [ 2 ]

0 голосов
/ 20 марта 2020

Я не слежу за вашими двумя макетами и за тем, как они взаимодействуют, но обычно вы добавляете представление и подключаете его следующим образом:

  1. Создайте TextView
  2. Добавьте просмотр макета
  3. Создание ConstraintSet
  4. Клонирование ограничений макета (и идентификаторов) в ConstraintSet cs.clone(layout)
  5. Установите соединения
  6. Примените ConstraintSet к макету: constraintSet.applyTo(myLayout)

Кроме того, поскольку вы удаляете все виды из myLayout и не добавляете что угодно, ваш макет будет пустым. Исправьте это тогда, что выше.

0 голосов
/ 20 марта 2020

отображается после установки ограничений, например

    ConstraintLayout myLayout= findViewById(R.id.lo1);
    myLayout.removeAllViews();

    ConstraintSet constraintSet = new ConstraintSet();

    CheckBox cb = new CheckBox(myLayout.getContext());
    cb.setText("CHECKBOX");
    cb.setId(View.generateViewId());


    constraintSet.connect(cb.getId(),ConstraintSet.END,myLayout.getId(),ConstraintSet.END);
    constraintSet.connect(cb.getId(),ConstraintSet.TOP,myLayout.getId(),ConstraintSet.TOP);

    constraintSet.applyTo(myLayout);
    myLayout.addView(cb);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...