如何在RelativeLayout中动态重叠视图?

时间:2012-03-21 06:13:18

标签: android android-layout

我在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);

谢谢..

2 个答案:

答案 0 :(得分:1)

您在布局中已经有ProgressBar(使用findViewById搜索它),因此您不应该再次将其添加到布局中(与 mRelativeLayout相同的事情 RelativeLayout如果它已经在布局文件中)。删除这一行:

mRelativeLayout.addView(progressBar);
mHorizontalLayout.addView(mRelativeLayout);

如果您在布局中有视图,则将它们再次添加到布局中!

答案 1 :(得分:0)

您对图像和进度条的确切想要做什么。如果要在图像上显示ProgressBar,请使用FrameLayout。在那也你可以使用VISIBLE和GONE东西。

您要在哪里显示动态生成的视图? 因为我们有适配器来显示具有不同内容的相同类型的数据。