Полноэкранная тема для AppCompat
Я хотел бы знать, как я могу применить полноэкранную тему (без заголовка + никаких действий) к активности. Я использую библиотеку AppCompat из пакета поддержки v7.
Я попытался применить android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
к моей конкретной деятельности, но он разбился. Я думаю, потому что моя тема приложения такова.
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
Я также пробовал это
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
который скрывает только строку заголовка, но не панель действий.
Моим текущим обходным путем является скрытие панели действий с помощью
getSupportActionBar().hide();
Ответы
Ответ 1
Когда вы используете Theme.AppCompat в своем приложении, вы можете использовать FullScreenTheme, добавив приведенный ниже код в стили.
<style name="Theme.AppCompat.Light.NoActionBar.FullScreen" parent="@style/Theme.AppCompat.Light.NoActionBar">
<item name="android:windowNoTitle">true</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
а также упомянуть в вашем файле манифеста.
<activity
android:name=".activities.FullViewActivity"
android:theme="@style/Theme.AppCompat.Light.NoActionBar.FullScreen"
/>
Ответ 2
Основываясь на ответе @nebyan, я обнаружил, что панель действий все еще не скрывается.
У меня работает следующий код:
<style name="AppFullScreenTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowNoTitle">true</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
и, конечно же, не забыл отредактировать файл AndroidManifest
.
<activity
android:name="YOUR_ACTIVITY_NAME"
android:theme="@style/AppFullScreenTheme"
/>
Ответ 3
<style name="Theme.AppCompat.Light.NoActionBar" parent="@style/Theme.AppCompat">
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
</style>
Используя вышеупомянутый xml в style.xml, вы сможете скрыть заголовок, а также панель действий.
Ответ 4
Проблемы возникают до и после версий Android 4.0 (уровень API 14).
отсюда https://developer.android.com/training/system-ui/status.html Я создал собственное решение..
@SuppressLint("NewApi")
@Override
protected void onResume()
{
super.onResume();
if (Build.VERSION.SDK_INT < 16)
{
// Hide the status bar
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
// Hide the action bar
getSupportActionBar().hide();
}
else
{
// Hide the status bar
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
/ Hide the action bar
getActionBar().hide();
}
}
Я пишу этот код в методе onResume(), потому что если вы выходите из приложения и затем снова открываете его, панель действий остается активной! (и так это решит проблему)
Я надеюсь, что это было полезно;)
Ответ 5
Ваш "обходной путь" (сокрытие самого ActionBar) является обычным способом. Но google рекомендует всегда скрывать ActionBar при скрытии TitleBar. Посмотрите здесь: https://developer.android.com/training/system-ui/status.html
Ответ 6
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//to remove "information bar" above the action bar
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
//to remove the action bar (title bar)
getSupportActionBar().hide();
}
Ответ 7
Вы можете следовать ниже: -
AndoridMenifest.xml
<activity
android:name=".ui.FullImageActivity"
android:label="@string/title_activity_main"
android:screenOrientation="landscape"
android:theme="@style/DialogTheme">
</activity>
Style.xml
<style name="DialogTheme" parent="android:Theme.Dialog">
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">fill_parent</item>
<!-- No backgrounds, titles or window float -->
<item name="android:windowNoTitle">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowIsFloating">false</item>
</style>
FullImageActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
setContentView(R.layout.image_view);
}
Я надеюсь, что это поможет... Спасибо!
Ответ 8
Это должно быть parent = "@style/Theme.AppCompat.Light.NoActionBar"
<style name="Theme.AppCompat.Light.NoActionBar.FullScreen"
parent="@style/Theme.AppCompat.Light.NoActionBar">
<item name="android:windowNoTitle">true</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
Ответ 9
requestWindowFeature(Window.FEATURE_NO_TITLE);
Ответ 10
Чтобы удалить строку заголовка в AppCompat:
@Override
protected void onCreate(Bundle savedInstanceState) {
supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
}
Ответ 11
<style name="Theme.AppCompat.Light.NoActionBar.FullScreen" parent="@style/Theme.AppCompat.Light">
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
Ответ 12
только это?
<style name="Theme.AppCompat.Light.NoActionBar.FullScreen">
<item name="android:windowFullscreen">true</item>
</style>
Ответ 13
Эта тема работает только после API 21 (в комплекте). И сделайте прозрачным StatusBar и NavigationBar.
<style name="TransparentAppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:navigationBarColor">@android:color/transparent</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
Ответ 14
Просто у этого ребят свой стиль:
<style name="AppTheme" parent="@style/Theme.AppCompat.Light">
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item> </style>
Ответ 15
Чтобы скрыть как строку состояния, так и панель действий, и сделать вашу деятельность полноэкранной, используйте следующий код в своей активности onResume()
или onWindowFocusChanged()
:
@Override
protected void onResume() {
super.onResume();
View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN);
}
Вы можете найти больше информации по следующим ссылкам:
Примечание. Используя решения xml, представленные в этой теме, я мог скрыть только строку состояния, но не панель навигации.
Ответ 16
Вы можете попробовать следующее:
<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowFullscreen">true</item>
</style>