Программно добавлять ограничения для просмотра в макете ограничений - PullRequest
0 голосов
/ 10 июля 2019

Я создаю TextViews программно и добавляю их в свой макет ограничений. Они по умолчанию размещены в верхнем левом углу. Я хочу, чтобы они были ниже друг друга, первый из которых находится под EditText.

Это мой код:

ConstraintLayout layout = (ConstraintLayout) findViewById(R.id.cLayout);
ConstraintSet set = new ConstraintSet();
TextView tv = new TextView(this);
ConstraintLayout.LayoutParams lp = new ConstraintLayout.LayoutParams(
    ConstraintLayout.LayoutParams.WRAP_CONTENT, // Width of TextView
    ConstraintLayout.LayoutParams.WRAP_CONTENT);
tv.setLayoutParams(lp);
set.clone(layout);
set.connect(tv.getId(), ConstraintSet.START, ConstraintSet.PARENT_ID, ConstraintSet.START, 8);
set.connect(tv.getId(), ConstraintSet.TOP, editText.getId(), ConstraintSet.BOTTOM, 8);
tv.setId(View.generateViewId());
set.applyTo(layout);
layout.addView(tv,0);

Как видите, я уже установил ограничение от TOP of View до BOTTOM editText. Тем не менее, это показывает в верхнем левом углу. Почему это?

1 Ответ

0 голосов
/ 10 июля 2019

Ваш код кода неправильный, следующий код должен работать.

ConstraintLayout layout = (ConstraintLayout) findViewById(R.id.cLayout);

TextView tv = new TextView(this);
tv.setText("Something");
tv.setId(View.generateViewId());
ConstraintLayout.LayoutParams lp = new ConstraintLayout.LayoutParams(
    ConstraintLayout.LayoutParams.WRAP_CONTENT, // Width of TextView
    ConstraintLayout.LayoutParams.WRAP_CONTENT);
tv.setLayoutParams(lp);
layout.addView(tv,0);

ConstraintSet set = new ConstraintSet();
set.clone(layout);
set.connect(tv.getId(), ConstraintSet.START, ConstraintSet.PARENT_ID, ConstraintSet.START, 8);
set.connect(tv.getId(), ConstraintSet.TOP, editText.getId(), ConstraintSet.BOTTOM, 8);
set.applyTo(layout);

P.S. - Я согласен с Сайедом Ахмедом Джамилем в том, что вам предпочтительно использовать RecyclerView или ListView, но не помешает знать, как правильно установить ограничения ConstraintLayout.

...