私がここで試みているのは、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 を使用しています