Android LayoutParams会覆盖它们自己

Android LayoutParams会覆盖它们自己,android,android-constraintlayout,android-layoutparams,Android,Android Constraintlayout,Android Layoutparams,我正在开发一个小游戏,我需要给不同的图像视图不同的布局参数。因此,我创建了一个数组ConstraintLayoutParams。分别更改layoutparams的属性后,所有layoutparams的属性都与上一个相同。所以他们一直在覆盖自己 p[0] = (ConstraintLayout.LayoutParams) card2.getLayoutParams(); p[0].startToStart=R.id.plazertxt1; Toast.makeText(getAppl

我正在开发一个小游戏,我需要给不同的图像视图不同的布局参数。因此,我创建了一个数组ConstraintLayoutParams。分别更改layoutparams的属性后,所有layoutparams的属性都与上一个相同。所以他们一直在覆盖自己

 p[0] = (ConstraintLayout.LayoutParams) card2.getLayoutParams();     
 p[0].startToStart=R.id.plazertxt1;
Toast.makeText(getApplicationContext(),String.valueOf(p[0].startToStart),Toast.LENGTH_LONG).show();  
 // shows 2131165282
        p[1] = (ConstraintLayout.LayoutParams) card2.getLayoutParams();
        p[1].startToStart=R.id.plazertxt2;
        p[2] = (ConstraintLayout.LayoutParams) card2.getLayoutParams();
        p[2].startToStart=R.id.plazertxt3;
        p[3] = (ConstraintLayout.LayoutParams) card2.getLayoutParams();
        p[3].startToStart=R.id.plazertxt4;
  Toast.makeText(getApplicationContext(),String.valueOf(p[0].startToStart)+","+String.valueOf(p[1].startToStart)+","+String.valueOf(p[2].startToStart)+","+String.valueOf(p[3].startToStart)+",",Toast.LENGTH_LONG).show();
//shows 2131165285,2131165285,2131165285,2131165285
最后一次祝酒的预期结果应该是

"2131165282,2131165283,2131165284,2131165285"
但事实确实如此

"2131165285,2131165285,2131165285,2131165285"

下面的语句都返回相同的结构。对
getLayoutParams()
的每次调用都不会得到新的布局参数

因此,在这三行之后
p[1]==p[2]==p[3]
。执行以下行时:

p[1].startToStart=R.id.plazertxt2;
p[2].startToStart=R.id.plazertxt3;
p[3].startToStart=R.id.plazertxt4;
然后
p[1]==p[2]==p[3]==R.id.plazertxt4
,因为
p[3]。startStart=R.id.plazertxt4
是最后执行的

这有点令人困惑,但事情就是这样。应避免将布局参数用于约束设置,而应使用

此类允许您以编程方式定义一组约束以与ConstraintLayout一起使用。它允许您创建和保存约束,并将其应用于现有的ConstraintLayout


下面的语句都返回相同的结构。对
getLayoutParams()
的每次调用都不会得到新的布局参数

因此,在这三行之后
p[1]==p[2]==p[3]
。执行以下行时:

p[1].startToStart=R.id.plazertxt2;
p[2].startToStart=R.id.plazertxt3;
p[3].startToStart=R.id.plazertxt4;
然后
p[1]==p[2]==p[3]==R.id.plazertxt4
,因为
p[3]。startStart=R.id.plazertxt4
是最后执行的

这有点令人困惑,但事情就是这样。应避免将布局参数用于约束设置,而应使用

此类允许您以编程方式定义一组约束以与ConstraintLayout一起使用。它允许您创建和保存约束,并将其应用于现有的ConstraintLayout