ImageViews иногда не отображаются в активности FrameLayout - PullRequest
0 голосов
/ 11 января 2011

Макет верхнего уровня в моей деятельности - это framelayout.Я завершил, отладил и протестировал это приложение, и оно работает точно так же, как и во всех отношениях на моем g1 и на различных эмуляторах.Но на 3,7-дюймовых дисплеях, работающих под управлением версии 2.1+, некоторые изображения, упакованные в линейную линейку, периодически не видны.Я знаю, что они есть, потому что вы можете коснуться и перетащить их с эффектом в приложении.Поэтому я предполагаю, что они каким-то образом попали под SurfaceView, который является основным компонентом приложения.По-видимому, это так, даже если SurfaceView объявлен в xml до LinearLayout.Тем не менее, ImageViews в LinearLayout добавляются программно к концу onCreate ().

Framelayout укладывает все, что к нему добавлено, один поверх другого - единственный способ увидеть более одногодочерний элемент макета кадра, если он меньше экрана и расположен отдельно друг от друга.

Как ни странно, иногда изображения видны - они случайные.В любом случае, я пытался бороться с этим с помощью framelayout.bringChildToFront (View v) на linearlayout без успеха.

Интересно, есть ли у кого-нибудь понимание того, как поведение может быть случайным, как это, и как яследует кодировать эти просмотры изображений, чтобы этого не происходило, и почему проблема возникает только на экранах с диагональю 3,7 дюйма и 3,2 дюйма (как это бывает, оба экрана с диагональю 3,2 дюйма были htc, поэтому фактор поставщика тоже может быть фактором).

[edit] На самом деле, я решил, что это проблема 2.2, а не размера экрана (или даже поставщика).Невозможно гарантировать, что ImageViews, добавленные в framelayout с SurfaceView в нем, появятся в верхней части SurfaceView.Я выполнил несколько тестов в соответствующих методах onDraw (), и viewviews «visible» (0), и ничто не влияет на альфа рисованных объектов, которые также присутствуют в ondraw ().[/ edit]

Любое понимание приветствовалось бы.

Кен Т.

1 Ответ

0 голосов
/ 17 января 2011

Мне пришлось нарисовать рисованные элементы в методе SurfaceView doDraw (), и мне пришлось изменить имена файлов этих элементов. Я думаю, что это был случай вредоносного кода где-то. Мне пришлось отказаться от ImageViews и перенести мой код обработки касаний в другое место.

...