我试图在布局上动态添加一些图像视图,因为我必须在路径上一个接一个地移动它们。
这是我的代码的一部分,但我收到此错误:指定的子代已经有父代。您必须先在孩子的父母身上调用removeView()。
我不知道如何解决这个问题。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
int random1=random(5);
int random2=random(9);
for(int i=1;i<=random2;i++) {
RelativeLayout layoutBase = (RelativeLayout) findViewById(R.id.banda_bk);
ImageView Img = new ImageView(this);
if (random1 == 1) {
Img = (ImageView) findViewById(R.id.ImageView1);
Img.setVisibility(View.VISIBLE);
anim_translate = AnimationUtils.loadAnimation(getApplicationContext(), translate);
Img.startAnimation(anim_translate);
}
if (random1 == 2) {
Img = (ImageView) findViewById(R.id.ImageView2);
Img.setVisibility(View.VISIBLE);
anim_translate = AnimationUtils.loadAnimation(getApplicationContext(), translate);
Img.startAnimation(anim_translate);
}
if (random1 == 3) {
Img = (ImageView) findViewById(R.id.ImageView3);
Img.setVisibility(View.VISIBLE);
anim_translate = AnimationUtils.loadAnimation(getApplicationContext(), translate);
Img.startAnimation(anim_translate);
}
if (random1 == 4) {
Img = (ImageView) findViewById(R.id.ImageView4);
Img.setVisibility(View.VISIBLE);
anim_translate = AnimationUtils.loadAnimation(getApplicationContext(), translate);
Img.startAnimation(anim_translate);
}
if (random1 == 5) {
Img = (ImageView) findViewById(R.id.ImageView5);
Img.setVisibility(View.VISIBLE);
anim_translate = AnimationUtils.loadAnimation(getApplicationContext(), translate);
Img.startAnimation(anim_translate);
}
layoutBase.addView(Img);
}
}
谢谢!
答案 0 :(得分:0)
错误说明了。您的ImageView已放置在容器中。 在将容器添加到layoutBase之前,需要在容器上调用ViewGroup.RemoveChildAt(即LinearLayout或您使用的东西)。
答案 1 :(得分:0)
int random1=random(5);
int random2=random(9);
layoutBase.removeAllViews();
for(int i=1;i<=random2;i++) {
答案 2 :(得分:0)
每次循环时都不需要重新创建layoutBase
int random1=random(5);
int random2=random(9);
RelativeLayout layoutBase = (RelativeLayout) findViewById(R.id.banda_bk);
for(int i=1;i<=random2;i++) {
....
获取Relativelayout 1次并添加或删除子项。