Программно установить ограничения для textViews, созданных во время выполнения? - PullRequest
0 голосов
/ 09 сентября 2018

Приведенный ниже код создает различное количество textView с во время выполнения в зависимости от количества ключей в friendMap:

        generatedViews = new TextView[numberOfFriends];
        int count = 0;
        for (String k : friendMap.keySet()) {


            TextView textView = new TextView(this);
            textView.setVisibility(View.VISIBLE);
            textView.setText(k);
            textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20f);
            textView.setGravity(Gravity.CENTER);


            String mutual = friendMap.get(k);

            if (mutual.equals("no")) {
                textView.setBackgroundColor(Color.RED);
            } else {
                textView.setBackgroundColor(Color.GREEN);
            }
            linLayout.addView(textView);
            generatedViews[count] = textView;
            count++;
        }

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

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Как сказал @TheWandered, вам, вероятно, следует использовать RecyclerView.

Но если по какой-то причине это не вариант, вот как вы можете это сделать:

Во-первых, вам нужно будет сгенерировать ID для каждого TextView, чтобы вы могли настроить ограничения, а затем:

ConstraintSet constraintSet = new ConstraintSet();
constraintSet.clone(constraintLayout);
constraintSet.connect(text_view_id,ConstraintSet.TOP, previous_text_view_id,ConstraintSet.BOTTOM,0);
// is equal to "layout_constraintTop_toBottomOf="previous_text_view_id"
constraintSet.applyTo(constraintLayout);
0 голосов
/ 09 сентября 2018

Все просто:

Установите параметры макета LinearLayout с помощью:

            LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
            layoutParams.setMargins(100, 20, 100, 20);
            linLayout.addView(textView, layoutParams);
...