我想在ConstraintLayout中添加2个按钮.我目前的代码如下:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ConstraintLayout layout = (ConstraintLayout) findViewById(R.id.activity_main); ConstraintSet set = new ConstraintSet(); set.clone(layout); //Button 1: Button button = new Button(this); button.setText("Hello"); layout.addView(button); set.connect(button.getId(), ConstraintSet.LEFT, layout.getId(), ConstraintSet.LEFT, 0); set.connect(button.getId(), ConstraintSet.RIGHT, layout.getId(), ConstraintSet.RIGHT, 0); set.connect(button.getId(), ConstraintSet.BOTTOM, layout.getId(), ConstraintSet.BOTTOM, 0); set.constrainWidth(button.getId(), ConstraintSet.MATCH_CONSTRAINT); set.constrainHeight(button.getId(), 200); set.applyTo(layout); //Button 2: Button newButton = new Button(this); newButton.setText("Yeeey"); layout.addView(newButton); set.connect(newButton.getId(), ConstraintSet.BOTTOM, button.getId(), ConstraintSet.TOP, 0); set.connect(newButton.getId(), ConstraintSet.LEFT, button.getId(), ConstraintSet.LEFT, 0); set.connect(newButton.getId(), ConstraintSet.RIGHT, button.getId(), ConstraintSet.RIGHT, 0); set.constrainHeight(newButton.getId(), 200); set.applyTo(layout); }
但我只得到1个可见按钮(另一个可能隐藏在这个按钮后面),它位于屏幕的左上角.应该有两个按钮,在屏幕的底部,相互链接.
我在这做错了什么?
期望的结果:
这是您想要实现的工作代码
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ConstraintLayout layout = (ConstraintLayout) findViewById(R.id.activity_main); ConstraintSet set = new ConstraintSet(); set.clone(layout); //Button 1: Button button = new Button(this); button.setText("Hello"); button.setId(100); // <-- Important layout.addView(button); set.connect(button.getId(), ConstraintSet.BOTTOM, ConstraintSet.PARENT_ID, ConstraintSet.BOTTOM, 0); set.connect(button.getId(),ConstraintSet.RIGHT,ConstraintSet.PARENT_ID,ConstraintSet.RIGHT,0); set.connect(button.getId(),ConstraintSet.LEFT,ConstraintSet.PARENT_ID,ConstraintSet.LEFT,0); set.constrainHeight(button.getId(), 200); set.applyTo(layout); //Button 2: Button newButton = new Button(this); newButton.setText("Yeeey"); layout.addView(newButton); set.connect(newButton.getId(), ConstraintSet.BOTTOM, button.getId(), ConstraintSet.TOP, 0); set.connect(newButton.getId(),ConstraintSet.RIGHT,ConstraintSet.PARENT_ID,ConstraintSet.RIGHT,0); set.connect(newButton.getId(),ConstraintSet.LEFT,ConstraintSet.PARENT_ID,ConstraintSet.LEFT,0); set.constrainHeight(newButton.getId(), 200); set.applyTo(layout); }
重要说明:
如果id
未明确设置,则所有元素将获得相同的id(-1).