J'aimerais savoir comment appliquer le thème plein écran (sans barre de titre ni barre d'action) à une activité. J'utilise la bibliothèque AppCompat du support package v7.
J'ai essayé d'appliquer Android:theme="@Android:style/Theme.NoTitleBar.Fullscreen"
à mon activité spécifique, mais celle-ci s'est bloquée. Je pense que c'est parce que mon thème d'application est comme ça.
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
J'ai aussi essayé ça
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
qui ne cache que la barre de titre mais pas la barre d’action. Ma solution actuelle consiste à cacher la barre d’action avec
getSupportActionBar().hide();
Lorsque vous utilisez Theme.AppCompat dans votre application, vous pouvez utiliser FullScreenTheme en ajoutant le code ci-dessous aux styles.
<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>
et mentionnez également dans votre fichier manifeste.
<activity
Android:name=".activities.FullViewActivity"
Android:theme="@style/Theme.AppCompat.Light.NoActionBar.FullScreen"
/>
Basé sur la réponse de @nebyan, j'ai trouvé que la barre d'action ne se cache toujours pas.
Le code suivant fonctionne pour moi:
<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>
et bien sûr, n’oubliez pas de modifier votre fichier AndroidManifest
.
<activity
Android:name="YOUR_ACTIVITY_NAME"
Android:theme="@style/AppFullScreenTheme"
/>
<style name="Theme.AppCompat.Light.NoActionBar" parent="@style/Theme.AppCompat">
<item name="Android:windowNoTitle">true</item>
<item name="Android:windowFullscreen">true</item>
</style>
En utilisant le code XML ci-dessus dans style.xml, vous pourrez masquer le titre ainsi que la barre d’action.
Des problèmes se posent entre les versions antérieures et ultérieures d'Android 4.0 (API de niveau 14).
à partir d'ici https://developer.Android.com/training/system-ui/status.html J'ai créé ma propre solution ..
@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();
}
}
J'écris ce code dans la méthode onResume (), car si vous quittez votre application et que vous le rouvrez, la barre d'action reste active! (et si cela résout le problème)
J'espère que c'était utile;)
Votre "solution de contournement" (cacher le barre d’action vous-même) est la méthode normale. Mais Google recommande de toujours masquer la barre d’action lorsque la barre de titre est masquée. Regardez ici: https://developer.Android.com/training/system-ui/status.html
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();
}
Vous pouvez suivre l'étape ci-dessous: -
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);
}
J'espère que ça va aider .. Merci !!
Ce devrait être 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>
requestWindowFeature(Window.FEATURE_NO_TITLE);
Pour supprimer la barre de titre dans AppCompat:
@Override
protected void onCreate(Bundle savedInstanceState) {
supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
}
<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>
juste ça ?
<style name="Theme.AppCompat.Light.NoActionBar.FullScreen">
<item name="Android:windowFullscreen">true</item>
</style>
Vous pouvez essayer ce qui suit :
<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
<item name="Android:windowFullscreen">true</item>
</style>
Pour masquer la barre d'état et la barre d'action et rendre votre activité en plein écran, utilisez le code suivant dans la méthode onResume()
ou onWindowFocusChanged()
de votre activité:
@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);
}
Vous pouvez trouver plus d'informations dans les liens suivants:
Note: En utilisant les solutions XML fournies dans ce fil, je ne pouvais cacher que la barre d'état mais pas la barre de navigation.
Simplement à ce gars à votre style:
<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>
Ce thème ne fonctionne qu'après API 21 (inclus). Et rendre la barre d'état et la barre de navigation transparentes.
<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>