Comment Afficher et masquer ActionBar avec AppCompat v. 7
J'ai une application simple qui affiche le texte.
L'application démarre avec un écran principal avec quelques options (ex. un bouton d'info qui mène à des informations sur l'application, un bouton parcourir qui permet à l'utilisateur de voir tous les éléments de texte qui peut être affiché). Le bouton principal mène à un autre écran où le texte est affiché. Balayez vers la gauche et la droite on peut voir des passages de texte. C'est le but principal de l'application.
Actuellement, j'ai une ActionBar mis en œuvre. Mon MainActivity.Java s'étend AppCompatActivity. Tout dans l'app est dans cette activité.
Maintenant, je veux faire en sorte de l'ActionBar n'apparaît que dans "Affichage" mode, pas dans l'écran de démarrage, ou "info" /"parcourir" mode.
Est-il possible d'avoir une ActionBar dans une partie de l'application, et pas ActionBar dans une autre partie de l'application? (Et de les garder tous dans la même activité?)
J'ai essayé d'accomplir cela, sans succès. Si cela est possible, que dois-je essayer?
Jusqu'à présent, j'ai tenté le suivant:
1) Créer ce thème
<style name="Theme.AppCompat.NoActionBar" parent="Theme.AppCompat.Light">
<item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
</style>
Et de l'appliquer à MainActivity ...
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/Theme.AppCompat.NoActionBar" >
....
Après cela, le ActionBar était toujours là. (Cela vient de ce S. O. post (android:windowNoTitle ne sera pas cacher actionbar avec appcompat-v7 21.0.0)
2) une Autre tentative a été à l'ajouter à onCreate.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
getActionBar().hide();
setContentView(R.layout.activity_main);
Cela venait de l'étude de ce S. O. post: (Comment masquer la barre d'action avant l'activité est créée, puis de le montrer à nouveau?)
Des suggestions?
Vous devez vous connecter pour publier un commentaire.
Dans les activités où vous voulez avoir pas barre d'action utiliser un thème dérivé de
Theme.AppCompat.NoActionBar
ouTheme.AppCompat.Light.NoActionBar
. Cette activité ne sera jamais en mesure d'afficher la barre d'action, sauf si vous fournissez votre propre viasetSupportActionBar(Toolbar)
.Dans les activités où vous voulez avoir la barre d'action utiliser un thème dérivé de
Theme.AppCompat
,Theme.AppCompat.Light
ouTheme.AppCompat.Light.DarkActionBar
. Cela vous permettra d'dynamiquement masquer ou afficher la barre d'action dans une telle activité. Vous ne serez pas en mesure de fournir votre propre barre d'action à l'aide de ces thèmes.Quand de travail avec appcompat-v7 barre d'action vous avez besoin pour l'obtenir en appelant
getSupportActionBar()
au lieu degetActionBar()
.Vous pouvez masquer et afficher l'ActionBar par programmation.
Pour masquer
Pour Montrer
Il peut également être fait à partir de Fragments
Pour masquer
Pour Montrer
Edit:
Comme l'a noté @RenniePet,
Vous devez appeler
((AppCompatActivity)getActivity()).getSupportActionBar()
, si vous utilisezToolbar
comme leActionBar
.Vous prolonger l'activité en tant que
AppCompatActivity
puis utilisez la barre d'action comme:-ActionBarActivity
est maintenant obsolète.AppCompatActivity
devrait être utilisé à la placehide
appel n'a aucun effet dans mon application.supprimer android au point windowActionbar.juste comme suit:
J'espère que cela peut vous aider.
AppCompatActivity dispose de sa propre barre d'outils intégrés. Vous n'avez pas besoin d'utiliser la barre d'outils supplémentaire définition dans votre xml principal.
appelez simplement getSupportActionBar().show()
Dans la méthode onCreate, après setContentView, utilisez ce simplement pour afficher ou masquer pour chaque classe.
Si vous souhaitez définir le titre,
J'espère que cela peut être une solution. Il a travaillé sur mon système:
Rejeter la Barre d'outils pour toutes les activités avec
AppTheme
:styles.xml:
Si vous essayez d'afficher/masquer l'ActionBar d'INTENTION avec AppCompatActivity et vous obtenez les questions suivantes:
Suivez ces étapes pour accéder à la même fil dans l'intention: