我在RelativeLayout中插入了一个ImageView。在这个ImageView的顶部,我正在尝试插入一个进度条,在下载图像后它将不可见。但是,当我在添加ImageView后添加进度条时,它会给我一个错误 -
java.lang.IllegalStateException:指定的子级已有父级。您必须首先在孩子的父母身上调用removeView()。
以下是代码:
mRelativeLayout = (RelativeLayout) mGallery.findViewById(R.id.relative_progress_spin_layout);
RelativeLayout.LayoutParams relativeLayoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
relativeLayoutParams.addRule(RelativeLayout.ALIGN_TOP, R.id.progress_spin);
progressBar = (ProgressBar) mGallery.findViewById(R.id.progress_spin);
image = new ImageView(GalleryModuleActivity.this);
image.setPadding(4, 4, 4, 4);
image.setScaleType(ImageView.ScaleType.FIT_XY);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(200, LinearLayout.LayoutParams.MATCH_PARENT);
image.setLayoutParams(layoutParams);
mRelativeLayout.addView(image);
mRelativeLayout.addView(progressBar);
mHorizontalLayout.addView(mRelativeLayout);
谢谢..
答案 0 :(得分:1)
您在布局中已经有ProgressBar
(使用findViewById
搜索它),因此您不应该再次将其添加到布局中(与 mRelativeLayout相同的事情 RelativeLayout
如果它已经在布局文件中)。删除这一行:
mRelativeLayout.addView(progressBar);
mHorizontalLayout.addView(mRelativeLayout);
如果您在布局中有视图,则不将它们再次添加到布局中!
答案 1 :(得分:0)
您对图像和进度条的确切想要做什么。如果要在图像上显示ProgressBar,请使用FrameLayout。在那也你可以使用VISIBLE和GONE东西。
您要在哪里显示动态生成的视图? 因为我们有适配器来显示具有不同内容的相同类型的数据。