web-dev-qa-db-fra.com

Thème plein écran pour AppCompat

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();
274
Ye Lin Aung

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" 
/>
767
nebyan

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" 
/>
62
Hover Ruan
<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.

17

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;)

9
KrhashisM

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

6
Simulant
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();
}
6
Shuyan Ji

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 !!

4
jagdish

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>
2
vntstudy
requestWindowFeature(Window.FEATURE_NO_TITLE);
1
prashantwosti

Pour supprimer la barre de titre dans AppCompat:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
        super.onCreate(savedInstanceState);
    }
0
Andoctorey
<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>

0
Matt Barrera

juste ça ?

<style name="Theme.AppCompat.Light.NoActionBar.FullScreen">
    <item name="Android:windowFullscreen">true</item>
</style>
0
Xan

Vous pouvez essayer ce qui suit

<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
            <item name="Android:windowFullscreen">true</item>
</style>
0
Sumit Shukla

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.

0
Darush

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>
0
Reza Hamzehie

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>
0
DysaniazzZ