Comment masquer la barre d'action avant l'activité est créée, puis de le montrer à nouveau?
J'ai besoin pour mettre en œuvre l'écran de démarrage dans mon nid d'application.
J'ai utiliser ce code dans l'activité de onCreate de montrer splash:
setContentView(R.layout.splash);
getActionBar().hide();
et ce code pour afficher principal de l'INTERFACE utilisateur après un certain temps:
setContentView(R.layout.main);
getActionBar().show();
Mais avant onCreate est appelé et splash apparaît, il y a peu de temps lors de la barre d'actions indiqué.
Comment puis-je faire de la barre d'action invisible?
J'ai essayé d'appliquer le thème à l'activité sans barre d'action:
<item name="android:windowActionBar">false</item>
mais dans ce cas getActionBar() renvoie toujours null et je n'ai trouvé aucun moyen de le montrer à nouveau.
- Pour
Theme.AppCompat.Light
... utiliser ce Comment Répondre[1] [1]: stackoverflow.com/a/25365193/1364896
InformationsquelleAutor Ilya Izhovkin | 2011-12-14
Vous devez vous connecter pour publier un commentaire.
Réglage
android:windowActionBar="false"
vraiment désactive le contrôle ActionBar mais alors, comme vous le dites,getActionBar();
renvoie la valeur null.Ce problème est résolu par:
Ce qui crée l'ActionBar et cache immédiatement avant qu'il a eu la chance d'être affiché.
Mais maintenant, il est un autre problème. Après la mise
windowActionBar="false"
dans le thème, l'Activité tire sa normal de Titre de la Fenêtre au lieu d'une ActionBar.Si nous essayons d'éviter cela en utilisant certains des
*.NoTitleBar
stock thèmes ou nous essayons de mettre en<item name="android:windowNoTitle">true</item>
dans notre propre thème, ça ne marchera pas.La raison en est que l'ActionBar dépend sur le Titre de la Fenêtre d'affichage lui-même - qui est l'ActionBar est une transformée de Titre de la Fenêtre.
Donc, l'astuce qui peut nous aider est d'ajouter une chose de plus à notre Activité thème xml:
Cela rendra le Titre de la Fenêtre avec une hauteur nulle, donc pratiquement invisible .
Dans votre cas, après vous avez terminé avec l'affichage de l'écran de démarrage, vous pouvez simplement appeler
et vous avez terminé. L'Activité va démarrer sans ActionBar scintillement, ni de Titre de la Fenêtre d'affichage.
ADDON:
Si vous avez d'afficher et de masquer l'ActionBar plusieurs fois peut-être vous avez remarqué que le première montrer, c'est pas d'animation. À partir de là, l'affichage et le masquage sont animés. Si vous voulez avoir de l'animation sur la première montre aussi, vous pouvez utiliser ceci:
La même chose peut être réalisé avec:
mais il peut avoir besoin de la logique supplémentaire pour vérifier si c'est la première exposition de l'Activité.
L'idée est de retarder un peu le cache de l'ActionBar. De façon à nous laisser l'ActionBar être montré, mais alors de le cacher immédiatement. Nous avons donc aller au-delà de la première non-animés montrant et en les montrant prochain sera considéré deuxième, il sera donc animé.
Comme vous l'avez deviné, il y a une chance que l'ActionBar pourrait être vu précédemment, il a été caché par le retard de l'opération. C'est effectivement le cas. La plupart du temps on ne voit rien, mais pourtant, une fois dans un certain temps, vous pouvez voir l'ActionBar scintillement pendant une fraction de seconde.
En tout cas, ce n'est pas une belle solution, donc je souhaite la bienvenue à toutes les suggestions.
Plus pour v7 soutien actionbar de l'utilisateur, le code sera:
setTheme
? Parce que votre réponse fonctionne très bien si j'ai mis le thème du Manifeste, mais si je le fais dansonCreate
(dans mon cas le thème dépend de la préférence pour la lumière de thème sombre) la valeur par défaut holo barre d'action clignote avant celle que j'ai mis dans mon thème, de toute façon. Mais c'est peut-être utile d'une autre complète, de SORTE question.setTheme
dansonCreate
et toujours utiliser celui défini dans le Manifeste. En d'autres termes, le Manifeste thème sert le que pour désactiver le contrôle ActionBar et de masquer la barre de titre avantonCreate
est atteint.android:theme="@android:style/Theme.NoTitleBar"
dans le Manifeste, puissetTheme(R.style.MyTheme)
dans l'activité principale duonCreate
, Ce qui garantit (en Android 4+) en évitant le flash de la valeur par défaut holoActionBar
avant celle que j'ai définie dans mon thème (je suis venu ici à la recherche d'un moyen pour contourner ce problème; en fait, je ne pas besoin d'un splash-screen).getSupportActionBar().hide();
aprèsgetWindow().requestFeature(Window.FEATURE_ACTION_BAR);
et tout explose avec un NPE. Des idées? Problème avecTheme.AppCompat
?ActionBarImpl can only be used with a compatible window decor layout
À l'aide de ce simple code dans votre .fichier de classe afin de masquer la barre d'action
Si vous utilisez ActionBarSherlock, puis utiliser le Thème.Sherlock.NoActionBar Thème de votre Activité
<activity android:theme="@android:style/Theme.NoActionBar">
.Theme.Sherlock.NoActionBar
va appelergetActionBar()
ougetSupportActionBar()
(par la suite afficher la barre d'action) renvoie la valeur null...error: Error: No resource found that matches the given name (at 'theme' with value '@android:style/ Theme.NoActionBar').
android:theme="@style/Theme.Sherlock.Light.NoActionBar"
android:Theme.Holo.Light.NoActionBar
Créer deux styles:
Ensemble AppThemeNoBar de l'application de thème et AppThemeBar à l'activité où vous voulez afficher l'ActionBar.
À l'aide de deux styles que vous ne verrez pas la barre d'Action alors que les vues sont en cours de chargement.
Vérifier ce lien Android: masquer la barre d'action tout en vue de charge
Salut j'ai une solution simple à l'aide de 2 thèmes
Écran de démarrage de thème (ajouter au manifeste):
<style name="SplashTheme" parent="@android:style/Theme.Holo.NoActionBar">
<item name="android:windowBackground">@color/red</item>
</style>
normal thème (l'ajouter dans votre activité par setTheme(R. style.Thème)):
<style name="Theme" parent="@style/Theme.Holo"> <item name="android:windowBackground">@color/blue</item>
</style>
À l'appui de SDK 10:
J'ai essayé de masquer la Barre d'Action sur Android 2.2, mais aucune de ces solution a fonctionné. Tout se termine par un crash. J'ai vérifié le DDMS Journal, Il me disait d'utiliser le Thème.AppCompat'.Enfin, j'ai Résolu le problème en changeant la
android:theme="@android:style/Theme.Holo.Light.NoActionBar"
Ligneen
android:theme="@style/Theme.AppCompat.NoActionBar"
et cela a fonctionné, mais l'Interface était sombre.ensuite, j'ai essayé
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
et a finalement obtenu ce que je voulais.Après que quand j'ai Cherché sur 'AppCompat" sur Développeur de Site je l'ai obtenu.
Donc je pense que la Solution pour Android 2.2 est
Et Désolé pour mon mauvais anglais, Comme Toujours.
Meilleur résultat pour moi était de créer une activité avec ThemeNoTitleBar et sans contenu comme lanceur. Puis cette activité appeler directement à l'autre.
Bien sûr, si vous voulez, vous pouvez ajouter du contenu pour le démarrage de l'Activité, mais dans mon cas, je voulais juste montrer l'application directement.
Manifeste:
Activité:
}
Si vous utilisez un
Activity
inclus un écran de démarrage, vous pouvez le faire si vous utilisezSherlockActionBar
Après l'écran de démarrage, vous pouvez l'afficher à nouveau avec ...
Il devrait être le même que le natif
ActionBar
de Android.@Clercs solution fonctionne. Mais cela semble aussi être un problème avec certains de googles native apps: google, play store, parlez-en. Aussi d'autres grandes applications comme skype.
MODIFIER: Bellow la solution m'ont donné des problème pour actionbarsherlock sur l'api < 4.0, la raison d'être setTheme ne fonctionne pas pré sandwich à la crème glacée
Ajoutez ce qui suit dans votre manifeste à l'intérieur de l'application ou de l'activité tags:
Et puis dans votre activité principale:
meilleur et simple
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
2015, avec le soutien v7 bibliothèque avec AppCompat thème, l'ensemble de ce thème pour votre Activité.
Pour
Splashscreen
vous devez utiliser cette ligne dansmanifest
et n'utilisez pasgetActionBar()
et une fois quand Splash
Activity
est fini dans les principauxActivity
utilisation ci-dessous ou rien<item android:name="android:windowActionBar">true</item>
de se débarrasser de cette erreur, mais je ne sais pas si elle fonctionne encore.Essayer, ça fonctionne pour moi:
Ci-dessous se débarrasser de l'activité de la barre de titre
Ci-dessous élimine la barre de notification pour afficher en plein écran
(Exemple Complet Ci-Dessous)
Prendre note: Ces méthodes ont été appelés avant l'affichage du contenu de notre activité
cela peut être pratique
ajoutez ceci à votre manifeste
acclamations
La meilleure façon que j'ai trouver après la lecture de toutes les options disponibles est définie thème principal sans ActionBar et ensuite mis en place MyTheme dans le code parent de toutes les Activités.
Manifeste:
BaseActivity:
De cette façon m'aide à éviter ActionBar lors de démarrage de l'application!
Les solutions déjà posté fournie avec le sideffect, que la première .show() l'appel n'a pas animer l'ActionBar pour moi.
J'ai eu une autre bonne solution, qui fixe que:
Créer un transparent drawable - quelque chose comme ça:
Le actionbar en arrière-plan invisible vue personnalisée qui vous définissez sur l'actionbar:
Définir l'arrière-plan transparent pour l'actionbar dans onCreate:
Importantes: Ne pas cacher l'actionbar immédiatement dans onCreate, mais avec un peu de retard plus tard - par exemple lors de la mise en page est terminée avec la création:
Avant votre premier .show() de l'appel à la vue personnalisée visible:
Dans le cas où vous avez null parce que vous êtes à l'aide de la bibliothèque de prise en charge, au lieu de
getActionBar()
vous devez appelergetSupportActionBar()
.Mettre votre écran d'accueil dans une activité distincte et l'utilisation
startActivityForResult
de votre activité principale estonCreate
méthode pour l'afficher. Cela fonctionne parce que, selon les docs:Vous devriez faire ceci seulement si l'argument de
onCreate
estnull
(indiquant un nouveau démarrage de votre activité, par opposition à un redémarrage en raison d'un changement de configuration).J'ai eu encore d'une erreur de pointeur null et enfin, il a aidé quand j'ai appelé en premier getWindow().requestFeature() et puis super.onCreate()
Juste ajouter ceci dans votre styles.xml
En fait, vous pourriez tout simplement mis en splash
Activity
avecNoActionBar
et de définir votre principale
activity
avec la barre d'action.La meilleure façon de le faire est de deux faire la première activité de la vierge de l'activité et le contenu que vous souhaitez mettre et puis après un certain temps le feu d'une autre activité.
En suivant ce chemin, vous pouvez faire la première activité de votre écran de démarrage sans barre d'action ou quoi que ce soit.
Voici ma première activité
Après que vous pouvez mettre toute votre activité en tant que première activité
Si vous ne voulez pas de barre d'action dans n'importe quel écran puis il suffit d'ajouter ceci dans votre styles
Android studio dans le modèle de construction pour le plein écran, si vous utilisez Android studio, vous pouvez suivre l'étape ci-dessous pour mettre en œuvre pleine activité à l'écran.
Fait. Android studio fait votre travail, vous pouvez maintenant vérifier le code pour le plein écran.
Juste ajouter ceci à votre MainActivity dans la fonction onCreate.
Je me rends compte que l'affichage de liens ne sont pas la meilleure façon de faire les choses, mais je vous recommande fortement de lire la documentation de Google eux-mêmes. C'est le fonctionnaire android doc sur comment contrôle de votre système d'interface utilisateur (des choses comme actionbar, barre de navigation, etc). Malheureusement, l'info est trop à poster directement, mais après avoir lu ceci vous permettra de comprendre exactement comment afficher et masquer les caractéristiques de n'importe quelle version de développement pour l', c'est tellement simple!
Cas où le lien ne change jamais, il peut être trouvé sous le fonctionnaire android documentation sous formation -> prise en main -> Meilleures pratiques pour l'interface utilisateur -> la gestion de l'interface utilisateur du système
https://developer.android.com/training/system-ui/index.html
vous pouvez utiliser ceci :
getSupportActionBar().hide();
si cela ne fonctionne pas, essayez celui-ci :si ci-dessus ne fonctionne pas, essayez comme ceci :
dans votre répertoire = res/values/style.xml , ouvrez style.xml -> il est attribut
parent
changement deparent="Theme.AppCompat.Light.DarkActionBar"
si tout cela ne fonctionne pas trop. je ne sais plus. mais pour moi, il fonctionne.