Макет верхнего уровня в моей деятельности - это макет кадра. Я завершил, отладил и протестировал это приложение, и оно работает точно так же, как и должно во всех отношениях на моем g1 и на различных эмуляторах. Но на 3,7-дюймовых дисплеях с версией 2.1+ некоторые изображения, упакованные в линейный макет, периодически не видны. Я знаю, что они там, потому что вы можете коснуться и перетащить их в приложении. Поэтому я предполагаю, что они каким-то образом попали под SurfaceView, который является основным компонентом приложения. По-видимому, это так, даже несмотря на то, что SurfaceView объявлен в xml до LinearLayout. Однако ImageViews IN LinearLayout программно добавляются ближе к концу onCreate().
Framelayout укладывает все, что к нему добавляется, одно поверх другого — единственный способ увидеть более одного дочернего элемента макета фрейма — это если они меньше экрана и расположены отдельно друг от друга.
Как ни странно, иногда изображения видны - это случайно. Во всяком случае, я безуспешно пытался бороться с этим с помощью framelayout.bringChildToFront(View v) на linearlayout.
Интересно, есть ли у кого-нибудь понимание того, как поведение может быть таким случайным, и как я должен кодировать эти изображения, чтобы этого не происходило, и почему проблема возникает только на экранах 3,7 против 3,2 дюйма (как это бывает, два 3,2-дюймовых экрана оба были htc, так что производитель тоже может иметь значение).
[править] На самом деле, я определил, что это проблема 2.2, а не проблема размера экрана (или даже поставщика). Невозможно гарантировать, что изображения ImageView, добавленные в макет фрейма с включенным в него SurfaceView, будут отображаться поверх представления поверхности. Я провел несколько тестов в соответствующих методах onDraw(), и изображения «видимы» (0), и ничего не делает с альфа-каналом рисунков, которые также есть в ondraw(). [/редактировать]
Любое понимание будет приветствоваться.
Кен Т.