2012-03-21 42 views
0

我在RelativeLayout中插入了一个ImageView。在这个ImageView之上,我试图插入一个进度条,这个进度条在图像下载后会隐藏。但是,当我添加ImageView后添加进度条时,它给了我一个错误 -如何在RelativeLayout中动态重叠视图?

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

谢谢..

回答

1

您已经有了ProgressBar在布局(你寻找它与findViewById),所以你不应该再添加它到布局(如果它已经在布局文件中,则与mRelativeLayoutRelativeLayout一样)。删除此行:

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

如果您有布局的意见,你再次将它们添加到布局!

+0

谢谢slukian!有效。 – FireAndIce 2012-03-21 07:15:53

0

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

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