以编程方式设置对在运行时创建的textView的约束?

时间:2018-09-09 00:39:29

标签: android textview android-constraintlayout

以下代码根据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 :(得分:0)

很简单:

使用以下命令设置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);

答案 1 :(得分:0)

正如@TheWandered所说,您可能应该使用RecyclerView。

但是如果由于某种原因这不是一个选择,可以按照以下方法进行操作:

首先,您将必须为每个TextView生成ID,因此您可以定位约束条件,然后:

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);