首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LayoutParams覆盖自身

LayoutParams覆盖自身
EN

Stack Overflow用户
提问于 2019-03-23 09:17:14
回答 1查看 80关注 0票数 1

我正在开发一个小游戏,我需要给不同的ImageViews不同的LayoutParams。因此,我创建了一个数组ConstraintLayoutParams。分别更改layoutparams的属性后,所有layoutparams都具有与上一个相同的属性。所以他们不会一直重写他们自己。

代码语言:javascript
复制
 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

最后一次Toast的预期结果应该是

代码语言:javascript
复制
"2131165282,2131165283,2131165284,2131165285"

但它是

代码语言:javascript
复制
"2131165285,2131165285,2131165285,2131165285"
EN

回答 1

Stack Overflow用户

发布于 2019-03-23 21:06:13

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

代码语言:javascript
复制
p[1] = (ConstraintLayout.LayoutParams) card2.getLayoutParams();
p[2] = (ConstraintLayout.LayoutParams) card2.getLayoutParams();
p[3] = (ConstraintLayout.LayoutParams) card2.getLayoutParams();

所以,在这三行之后,p[1] == p[2] == p[3]。当执行以下代码行时:

代码语言:javascript
复制
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].startToStart=R.id.plazertxt4是最后一个执行的。

这有点令人困惑,但这就是发生的事情。应避免使用布局参数进行约束设置,而应使用。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55309703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档