2011-02-06 2 views
1

Для моего приложения я скрываю панель заголовка и панель уведомлений для своей активности, используя функцию тем в файле манифеста. В нижней части мероприятия я хочу, чтобы на нем был рекламный баннер с 48-значным значком, и над этим остальная часть пространства должна быть заполнена объектом из моего класса GameView, где это просто расширяет SurfaceView так, как это видно на примере Lunar Lander.Проблема размещения баннера внизу макета

Моя текущая раскладка делает эту задачу для меня:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" android:layout_height="fill_parent" 
android:orientation="vertical"> 

    <GameView android:id="@+id/game_view" 
     android:layout_width="wrap_content" android:layout_height="wrap_content" 
      android:layout_weight="1"> 

<com.admob.android.ads.AdView android:id="@+id/ad" 
    android:layout_width="fill_parent" android:layout_height="48dip" /> 

</LinearLayout> 

Однако существует проблема, когда я переключаюсь от моего приложения с ключом дома (в каких случаях панель уведомлений для возврата), а затем переключиться обратно к моей деятельности. Когда я переключаюсь обратно, экран становится черным в течение короткого времени, мое рисованное поверхностное изображение появляется под панелью уведомлений, панель уведомлений затем анимируется и исчезает, мой поверхностный вид затем переходит в верхнюю часть экрана. Проблема в том, что черный горизонтальный прямоугольник теперь маскирует верхнюю часть моего рекламного баннера, где этот бар выглядит такой же, как панель уведомлений. Ascii искусство:

------------- 
|   | 
|   | <- surface view the same size as expected 
|   | 
|   | 
############# <- black rectangle 
|   | <- ad banner with the top part masked by the rectangle 
------------- 

Это как если бы мнения раскладывают до панели уведомлений исчезает, и когда бар исчезает мнения раскладывают снова, но что-то идет не так, выложив планку объявлений.

Любые советы о том, как я могу это исправить?

Я на Android 2.1, если это помогает. Я попробовал альтернативный подход RelativeLayout, но имел ту же проблему. Другой вариант может исправить это, возможно, но я ничего не могу придумать.

Edit: Соответствующий манифест код для создания моей деятельности:

<application android:label="@string/app_name" android:icon="@drawable/app_icon"> 
    <activity android:name="MainActivity" android:label="@string/app_name" 
     android:screenOrientation="portrait" android:configChanges="keyboardHidden|orientation" 
     android:theme="@android:style/Theme.NoTitleBar.Fullscreen"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
.... 
+0

Пожалуйста, разместите немного кода из вашей «Деятельности», в котором показано, какие методы устанавливают функцию «NO_TITLE» и флаги «FULLSCREEN» и в каком порядке. – Blrfl

+0

Спасибо, я добавил код манифеста, который устанавливает приложение в полноэкранный режим. Я не делаю этого с помощью вызовов методов. – rbcc

ответ

0

Эта проблема может уйти, если вы используете android:theme="@android:style/Theme.NoTitleBar.Fullscreen" в манифесте, а не снимая панель уведомлений с помощью Java-кода. Leastways, я не вижу эффект анимации, который вы описываете, когда я тестирую this sample project, который использует эту тему.

+0

Спасибо, но я уже перехожу в полноэкранный режим. Это не вызовы методов. Я думаю, что эта проблема специально связана с наличием баннера фиксированного размера под моим поверхностным видом (ваш проект, по-видимому, использует один большой поверхностный вид в макете). Можете ли вы придумать все, что я могу попробовать? Сейчас у меня нет вариантов. Я заметил, что если я заменю свое поверхностное представление, например, представление изображения У меня нет той же проблемы. Я думаю, что это может иметь какое-то отношение к тому, когда поверхностное представление решает, какой размер он хочет быть. – rbcc

+0

@rebeccamaher: Нет сомнений, что 'SurfaceView' - странная птица. На каком устройстве вы видите это поведение? Вы также можете попробовать переключиться на «RelativeLayout», поэтому позиция баннера определяется явными правилами раскладки, а не тем, насколько велик «SurfaceView». – CommonsWare

+0

@rebeccamaher: Я тестирую это на вехе, но это происходит и в эмуляторе. Я пробовал подход относительной компоновки. Полагаю, я могу попробовать разные перестановки, представление которых относительно того. – rbcc

Смежные вопросы