android:theme=@android:style/Theme.NoTitleBar.Fullscreen работает на уровне приложения, но не на уровне активности. Любая подсказка?

Мне нужно сделать одно из моих действий под названием MyNoStatusBarActivity.java полноэкранным.

Я добавил в манифесте:

<activity
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
    android:name=".MyNoStatusBarActivity"
    android:noHistory="true"
    android:label="@string/app_name"
    android:configChanges="touchscreen|keyboard|keyboardHidden|navigation|orientation">
    ...
</activity>

И в onCreate моей деятельности:

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    requestWindowFeature(Window.FEATURE_NO_TITLE);

    getWindow().setFlags(
        WindowManager.LayoutParams.FLAG_FULLSCREEN,
        WindowManager.LayoutParams.FLAG_FULLSCREEN);
}

Выполнение всего этого просто скрывает строку TITLE, а не строку STATUS.

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

Помощь будет действительно оценена. Спасибо!

P.S. Я не против, если это поведение больше недоступно в Honeycomb/ICS. Мне это нужно только для 2.2 и 2.3

ИЗМЕНИТЬ

Пробовал все предложения, упомянутые в других решениях в SO, но пока безуспешно. Тема работает на уровне приложения, но не на уровне активности.

Я использую HTC WildFire-S, Android версии 2.3.5.


person Vikas Singh    schedule 10.04.2012    source источник


Ответы (5)


В вашем XML-манифесте на уровне приложения введите следующее:

<application
    ...
    android:theme="@android:style/Theme.NoTitleBar" >
</application>

и в действии, которое вы хотите сделать полноэкранным, поместите это:

<activity

     android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
     ...
</activity>

Удалите все методы setWindowsFeature или setFlag в onCreate.

person Neoh    schedule 26.04.2013
comment
Я так считаю. Я проверял это на андроиде 2.2. - person Neoh; 16.05.2014

Я думаю, вам просто нужно убрать android:theme="@android:style/Theme.NoTitleBar.Fullscreen из мейнфеста, придерживаться только вызова кода, у меня это всегда работало. Какое тестовое устройство вы используете?

Также убедитесь, что эти звонки поступают до того, как вы звоните setContentView(R.layout.xxx) вот так

    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.xxx);

Проверьте весь свой код на наличие android:theme объявлений, т.е. манифеста и отдельных XML-файлов макетов. поскольку кажется, что объявление на уровне приложения работает (поскольку оно переопределяет любые последующие объявления темы), но есть что-то, переопределяющее ваш запрос уровня активности.

Попробуйте выполнить поиск по всему проекту по запросу «android:theme» и удалите все, в чем вы не уверены на 100%, проверьте это таким образом.

person Sam Clewlow    schedule 10.04.2012
comment
Не работает. Только заголовок гаснет, а строка состояния остается. Я использую HTC WildFire-S, Android версии 2.3.5. - person Vikas Singh; 10.04.2012
comment
На самом деле кажется, что верхняя часть активности идет ниже строки состояния. Строка состояния, кажется, имеет какой-то высокий z-индекс и скрывает часть моей полноэкранной активности! - person Vikas Singh; 10.04.2012
comment
Вы уверены, что в вашем проекте нет других объявлений темы xml? - person Sam Clewlow; 10.04.2012
comment
Вы также проверили отдельные файлы макета? (те, что расположены в res/layout) - person Sam Clewlow; 10.04.2012

Я положил это в свою деятельность:

requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_splash);

А в своем манифесте я не модифицирую, это мое, без модификаций:

android:theme="@style/AppTheme"

В моей деятельности xml:

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
person haelsite    schedule 04.09.2013

Это поможет:

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    requestWindowFeature(Window.FEATURE_NO_TITLE);

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

    setContentView(R.layout.activity_main);
}
person ahmedali    schedule 11.07.2016

Это решит вашу проблему

просто измените в своем манифесте @android:style... на @style/..

<application
    ...
    android:theme="@style/Theme.AppCompat.NoActionBar">
    ...
</application>
person Juan Denis    schedule 10.10.2017