Android - строка состояния запрещает полный экран - PullRequest
8 голосов
/ 19 июня 2010

Мое приложение правильно запускается в полноэкранном режиме при запуске. Однако после сворачивания и возврата к приложению строка состояния выскакивает и немного опускает мои представления. Как я могу сохранить строку состояния от перемещения моих представлений?

Вот мой макет:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:myapp="http://schemas.android.com/apk/res/com.example.draw"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
    <com.example.draw.DrawView 
        android:id="@+id/draw"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:visibility="visible"
        android:fitsSystemWindows="false"
    />      
<com.admob.android.ads.AdView     
       android:id="@+id/ad" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content"
       myapp:backgroundColor="#000000"
       myapp:primaryTextColor="#FFFFFF"
       myapp:secondaryTextColor="#CCCCCC"
       android:layout_gravity="bottom"
/>     

Вот часть моей деятельности по созданию:

requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
    WindowManager.LayoutParams.FLAG_FULLSCREEN);  

У меня также есть полноэкранная тема в манифесте:

android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"

Спасибо

Ответы [ 4 ]

16 голосов
/ 20 января 2011

Вы можете решить эту проблему с помощью:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);

(сделать это в onCreate) .... обратите внимание, что это сломает программную клавиатуру (IME) - так как текст редактирования больше не может скользить в поле зрения над клавиатурой. Этот флаг предотвращает перемещение окна на все ....

Если вам нужно, чтобы исправление текста также работало при исправлении ошибки состояния, вы можете сделать

someEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        public void onFocusChange(View v, boolean hasFocus) {
            if (hasFocus) {
                getWindow().clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
            } else {
                hideKeyboard();
                getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
            }   
        }
    });
3 голосов
/ 19 июня 2010

Есть известные ошибки со строкой состояния / строкой уведомлений.

См .:

http://code.google.com/p/android/issues/detail?id=3674

http://code.google.com/p/android/issues/detail?id=8052

http://code.google.com/p/android/issues/detail?id=5906

0 голосов
/ 01 декабря 2014

У меня была такая же проблема.Я изменил активность для вставки и удалил: android: theme = "@ android: style / Theme.Translucent"

0 голосов
/ 19 июня 2010

Просто android: theme = "@ android: style / Theme.NoTitleBar.Fullscreen" атрибута для вашей активности в манифесте достаточно. Надеюсь, что его работы

...