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.
Также, если я использую тему манифеста на уровне приложения вместо своей активности, она работает, но для всех действий моего приложения, которое не то, что я хочу. Я хочу, чтобы строка состояния отсутствовала только для одного конкретного действия.
Справка будет действительно оценена. Thnx!
P.S: Я в порядке, это поведение больше не доступно в Honeycomb/ICS. Мне нужно это только для 2.2 и 2.3
ИЗМЕНИТЬ
Пробовал все предложения, упомянутые в других решениях SO, но пока не успел. Тема работает, когда применяется к уровню приложения, но не относится к уровню активности.
Я использую HTC WildFire-S, android ver 2.3.5
Ответы
Ответ 1
В вашем манифесте xml, на уровне приложения поставьте это:
<application
...
android:theme="@android:style/Theme.NoTitleBar" >
</application>
и в действии, которое вы хотите сделать в полноэкранном режиме, сделайте следующее:
<activity
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
...
</activity>
Удалите все методы setWindowsFeature или setFlag в onCreate.
Ответ 2
Думаю, вам просто нужно вывести android:theme="@android:style/Theme.NoTitleBar.Fullscreen
из mainfest, придерживаться только кодового вызова, он всегда работал у меня. Какое тестовое устройство вы используете?
Также убедитесь, что эти вызовы приходят, прежде чем вы вызываете 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%, проверьте его таким образом
Ответ 3
Я помещаю это в свою деятельность:
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_splash);
И в моем манифесте я не изменяю, это мое, без изменений:
android:theme="@style/AppTheme"
В моей активности xml:
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
Ответ 4
Это сделает трюк:
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);
}
Ответ 5
Это устранит вашу проблему.
просто измените ваш манифест @android: style... для @style/..
<application
...
android:theme="@style/Theme.AppCompat.NoActionBar">
...
</application>