0

私がここで試みているのは、addNewToDo ボタンがクリックされたときに、 defaultEditTextビューを editText ビューから、defaultEditText と同じ制約を持つ checkBox ビューに変換する必要があるということです。

しかし、私が望んでいるのは、ボタンがクリックされると同時に、前のものと同じプロパティ(editText)でnewEditTextを作成し、プログラムで作成されたcheckBoxの下部に配置し、addNewToDoボタンも配置することですnewEditText の下に移動する必要があります

以下のコードは、

意図したプロパティで checkBox を作成します。
適切な幅と高さで新しい editText ビューを作成します。
新しく作成された editText の下のボタンを制約します。

で失敗し、

作成されたcheckBoxの下のnewEditTextビューを制限する

私が得ている出力は、

newEditText が UI の左上隅に配置されています。適切に制約されていない場合、ビューがそこに配置されることがわかりました。

ここに画像の説明を入力

    Button addNewToDo = findViewById(R.id.addNewToDo);
    addNewToDo.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

                CheckBox toDoCheckBox = new CheckBox(MainActivity.this);
                toDoCheckBox.setText(defaultEditText.getText().toString());
                toDoCheckBox.setTextSize(20);
                toDoCheckBox.setId(View.generateViewId());

                ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams) defaultEditText.getLayoutParams();

                ConstraintLayout.LayoutParams newParams = new ConstraintLayout.LayoutParams(
                        ConstraintLayout.LayoutParams.MATCH_PARENT,
                        ConstraintLayout.LayoutParams.MATCH_PARENT
                );

                newParams.width = params.width;
                newParams.height = params.height;
                newParams.startToStart = params.startToStart;
                newParams.leftToLeft = params.leftToLeft;
                newParams.topToTop = params.topToTop;
                newParams.leftMargin = params.leftMargin;
                newParams.topMargin = params.topMargin;

                constraintLayout.addView(toDoCheckBox,-1,newParams);
                defaultEditText.setVisibility(View.INVISIBLE);

                //creating a new editText
                EditText newEditText = new EditText(MainActivity.this);
                newEditText.setWidth(defaultEditText.getWidth());
                newEditText.setHeight(defaultEditText.getHeight());
                newEditText.setId(View.generateViewId());

                constraintSet.clone(constraintLayout);
                constraintSet.connect(newEditText.getId(),ConstraintSet.START,toDoCheckBox.getId(),ConstraintSet.START);
                constraintSet.connect(newEditText.getId(),ConstraintSet.END,toDoCheckBox.getId(),ConstraintSet.END);
                constraintSet.connect(newEditText.getId(),ConstraintSet.TOP,toDoCheckBox.getId(),ConstraintSet.BOTTOM);
                constraintSet.connect(addNewToDo.getId(),ConstraintSet.TOP,newEditText.getId(),ConstraintSet.BOTTOM);

                constraintSet.applyTo(constraintLayout);
                constraintLayout.addView(newEditText);


        }

    });

newEditText を checkBox に制約する方法は?

参考までに、私は ScrollView 内で ContraintLayout を使用しています

4

1 に答える 1