web-dev-qa-db-fra.com

android: theme = "@ Android: style / Theme.NoTitleBar.Fullscreen" fonctionne au niveau de l'application mais pas au niveau de l'activité. Un indice?

Je dois faire une de mes activités appelée MyNoStatusBarActivity.Java une activité plein écran.

J'ai ajouté dans le manifeste:

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

Et dans le onCreate de mon activité:

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    requestWindowFeature(Window.FEATURE_NO_TITLE);

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

Faire tout cela masque simplement la barre TITLE et non la barre STATUS.

De plus, si j'utilise le thème manifeste au niveau de l'application au lieu de mon activité, cela fonctionne mais pour toutes les activités de mon application, ce qui n'est pas ce que je veux. Je veux que la barre d'état ne s'applique qu'à une seule activité.

L'aide sera vraiment appréciée. Thnx!

P.S: Je suis d'accord, ce comportement n'est plus disponible dans Honeycomb/ICS. J'ai besoin de ça juste pour 2.2 et 2.3

MODIFIER

J'ai essayé toutes les suggestions mentionnées dans d'autres solutions en SO mais pas encore de succès. Le thème fonctionne lorsqu'il est appliqué au niveau de l'application mais pas au niveau de l'activité.

J'utilise HTC WildFire-S, Android ver 2.3.5

15
Vikas Singh

Dans votre fichier XML manifeste, au niveau de l'application, mettez ceci:

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

et dans l'activité que vous voulez faire en plein écran, mettez ceci:

<activity

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

Supprimez toutes les méthodes setWindowsFeature ou setFlag dans onCreate.

29
Neoh

Je pense que vous avez juste besoin de retirer le Android:theme="@Android:style/Theme.NoTitleBar.Fullscreen Du mainfest, de rester avec le code uniquement, cela a toujours fonctionné pour moi. Quel appareil de test utilisez-vous?

Assurez-vous également que ces appels arrivent avant vous appelez à setContentView(R.layout.xxx) comme ceci

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

Vérifiez l'ensemble de votre code pour les déclarations Android:theme, C'est-à-dire les fichiers xml de manifestes et de dispositions individuelles. car cela ressemble à le déclarer au niveau de l'application fonctionne (car il remplace toutes les déclarations de thème ultérieures) mais il y a quelque chose qui remplace votre demande de niveau d'activité.

Essayez de rechercher l'ensemble de votre projet pour "Android: thème" et supprimez tout ce dont vous n'êtes pas sûr à 100%, testez-le de cette façon

6
Sam Clewlow

Je mets ceci dans mon activité:

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

Et dans mon manifeste je ne modifie pas, c'est le mien, sans modifications:

Android:theme="@style/AppTheme"

Dans mon activité xml:

Android:theme="@Android:style/Theme.NoTitleBar.Fullscreen"
3
haelsite

Ça fera l'affaire:

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);
}
1
ahmedali

Cela résoudra votre problème

il suffit de changer dans votre manifeste @Android: style ... pour @ style/..

<application
    ...
    Android:theme="@style/Theme.AppCompat.NoActionBar">
    ...
</application>
0
Juan Denis