Как динамически перекрывать представления в RelativeLayout? - PullRequest
0 голосов
/ 21 марта 2012

Я вставил ImageView в RelativeLayout.Вверху этого 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 ]

1 голос
/ 21 марта 2012

У вас уже есть ProgressBar в макете (вы ищете его с помощью findViewById), поэтому вы не должны снова добавлять его в макет (то же самое с mRelativeLayout RelativeLayoutесли это уже в файле макета).Удалите эти строки:

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

Если у вас есть виды в макете, вы не добавляете их снова в макет!

0 голосов
/ 21 марта 2012

Что именно вы хотите сделать с изображениями и индикатором выполнения.Если вы хотите отобразить ProgressBar на изображениях, используйте FrameLayout.В этом также вы можете использовать VISIBLE и GONE.

Где вы хотите отображать динамически генерируемые представления?Потому что у нас есть адаптер для отображения данных одного типа с разным содержимым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...