我有一个约束布局。我以编程方式向约束布局中添加了具有随机图片的图像视图。当用户单击“新建游戏”按钮时,我想删除以编程方式创建的所有图像视图,并随机地重新创建它们。
当我在下面编写代码时,正在创建我的图像,但也保留了旧图像。如何在没有旧的imageviews的情况下重新加载约束布局?
CLCarrier.addView(Cards [i],-1);
答案 0 :(得分:1)
您可以通过以下几种不同的方式来做到这一点。
所有ViewGroup
子类都支持removeAllViews()
方法。这将删除当前在ViewGroup中的所有子对象,因此仅当您想摆脱一切时才适用。如果您想保留一些视图,将无法使用。
也许您在某个位置保留了一个List<ImageView> images
变量,并且在将图像添加到ConstraintLayout时也调用了images.add(myImageView)
。然后,您将获得一系列视图,可以循环访问并调用removeView()
:
for (ImageView image : images) {
constraintLayout.removeView(image);
}
如果您不想使用removeAllViews()
,并且也不想跟踪所有视图以便以后再删除它们,可以通过重新填充原始布局来重新初始化ConstraintLayout。
LayoutInflater inflater = LayoutInflater.from(this); // requires a `Context` object
constraintLayout = inflater.inflate(R.layout.constraint_layout, parent, false);