Je veux utiliser à la ToolBar
place de ActionBar
, mais ne me montre pas le menu dans la barre d'outils !!! Je veux un menu de réglage tel que les boutons Actualiser ou Paramètres dans ActionBar
.
Code Toolbar.xml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize"
app:navigationContentDescription="@string/abc_action_bar_up_description"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:title="Main Page"
android:gravity="center"/>
Code MainPage.java:
public class MainPage extends AppCompatActivity {
private Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_page);
toolbar = (Toolbar) findViewById(R.id.main_toolbar);
setSupportActionBar(toolbar);
if (getSupportActionBar() != null) {
getSupportActionBar().setTitle("Main Page");
}
toolbar.setSubtitle("Test Subtitle");
toolbar.inflateMenu(R.menu.main_manu);
}
}
code main_menu.xml:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/menu_main_setting"
android:icon="@drawable/ic_settings"
android:orderInCategory="100"
app:showAsAction="always"
android:actionLayout="@layout/toolbar"
android:title="Setting" />
<item
android:id="@+id/menu_main_setting2"
android:icon="@drawable/ic_settings"
android:orderInCategory="200"
app:showAsAction="always"
android:actionLayout="@layout/toolbar"
android:title="Setting" />
</menu>
Comment résoudre ce problème et afficher le menu dans Toolbar
? merci tous mes chers <3
Android Studio
et vérifiez-la. «ToolBar» ne doit pas être une entité indépendante.Réponses:
remplacez simplement onCreateOptionsMenu comme ceci dans votre MainPage.java
la source
N'utilisez pas setSupportActionBar (barre d'outils)
Je ne sais pas pourquoi mais cela fonctionne pour moi.
Pour l'élément de menu, cliquez sur faire ceci
la source
Voici une réponse plus complète en référence aux futurs visiteurs. J'utilise généralement une barre d'outils de support mais cela fonctionne aussi bien dans les deux cas.
1.Faites un menu xml
Cela va être dedans
res/menu/main_menu
.res
dossier et choisissez Nouveau> Fichier de ressources Android .main_menu
le nom du fichier.Collez le contenu suivant comme entrée.
Vous pouvez cliquer
res
avec le bouton droit de la souris et choisir Nouvel élément d'image pour créer l'ic_add
icône.2. Gonflez le menu
Dans votre activité, ajoutez la méthode suivante.
3. Gérer les clics de menu
Toujours dans votre activité, ajoutez la méthode suivante:
Lectures complémentaires
la source
Vous devez remplacer ce code dans votre activité:
et définissez votre barre d'outils comme ceci:
la source
Vous en avez également besoin pour implémenter une action dans toutes les options du menu.
la source
Bien que je sois d'accord avec cette réponse, car il a moins de lignes de code et que cela fonctionne:
Comment définir le menu sur la barre d'outils sous Android
Ma suggestion serait de toujours démarrer un projet à l'aide de l'assistant Android Studio. Dans ce code, vous trouverez quelques styles: -
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
et l'utilisation est:
En raison de
no action bar theme
déclaré dansstyles.xml
, qui est appliqué àMain Activity
dans leAndroidManifest.xml
, il n'y a pas d'exceptions, vous devez donc le vérifier ici.Toolbar
n'est pas une entité indépendante, c'est toujours une vue enfant dans la mesureAppBarLayout
où il est encore l'enfant deCoordinatorLayout
.TOUS LES DEUX:
Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar);
ET:
Comment définir le menu sur la barre d'outils sous Android
MARCHERA.
Codage heureux :-)
la source
Dans votre activité, remplacez cette méthode.
Cela gonflera votre menu ci-dessous:
la source
Dans mon cas, j'utilise un AppBarLayout avec un CollapsingToolbarLayout et le menu défilait toujours hors de l'écran, j'ai résolu mon problème en basculant android: actionLayout dans le XML du menu vers l'id de la barre d'outils. J'espère que cela pourra aider les gens dans la même situation!
activity_main.xml
main_menu.xml
la source
Solution simple à ce se couchait
showAsAction
àalways
dansmenu.xml
dans res / Menula source
res / layout / tiroir_menu
toolbar.xml
la source
Eh bien, vous devez définir la barre d'action de support setSupportActionBar (); et passez votre variable, comme ceci:
setSupportActionBar(toolbar);
la source
En XML, ajoutez une ligne à l'intérieur
<Toolbar/>
Dans le fichier java, remplacez ceci:
avec ça:
la source
Vous pouvez toujours utiliser la réponse fournie en utilisant Toolbar.inflateMenu même en utilisant setSupportActionBar (barre d'outils).
J'ai eu un scénario où je devais déplacer la fonctionnalité de configuration de la barre d'outils dans une classe distincte en dehors de l'activité qui ne connaissait pas à elle seule l'événement onCreateOptionsMenu.
Donc, pour implémenter cela, tout ce que j'avais à faire était d'attendre que la barre d'outils soit dessinée avant d'appeler inflateMenu en procédant comme suit:
Peut-être pas considéré comme très propre mais fait quand même le travail.
la source