2017-10-04 1 views
0

J'essaie d'afficher un menu. Je peux montrer le menu, mais seulement avec le ActionBar. Mais ça ne va pas à la barre d'outils. J'ai essayé d'utiliser un Theme AppCompat sans ActionBar, mais la barre d'outils est toujours vide.Le menu Android ne s'affiche pas avec la barre d'outils - Seulement avec la barre d'action

menu_toolbar.xml - C'est correct, ça marche sur ActionBar.

<?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" 
     xmlns:tools="http://schemas.android.com/tools" 
     > 
    <item 
     android:id="@+id/action_call" 
     android:title="Call" 
     app:showAsAction="always"  
     /> 

</menu> 

Mon manifeste avec le thème:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="OrderFoodApp.OrderFoodApp" android:versionCode="1" android:versionName="1.0" android:installLocation="auto"> 
    <uses-sdk android:minSdkVersion="21" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <application 
    android:allowBackup="true" 
    android:label="@string/app_name" 
    android:theme="@style/Theme.AppCompat.Light.NoActionBar" 
    > 
    </application> 
</manifest> 

Ma principale mise en page:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout 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="match_parent" 
    android:id="@+id/drawer_layout" 
    android:fitsSystemWindows="true"> 
    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:minHeight="?android:attr/actionBarSize" 
      android:background="@color/toolbar" 
      android:theme="@style/ThemeOverlay.AppCompat.ActionBar" 
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/> 

    </RelativeLayout> 
</android.support.v4.widget.DrawerLayout> 

Et ma classe (j'ai essayé avec onPrepareOptionsMenu trop)

namespace OrderFoodApp 
{ 
    [Activity(Label = "OrderFoodApp", MainLauncher = true)] 
    public class MainActivity : AppCompatActivity 
    { 
     protected override void OnCreate(Bundle savedInstanceState) 
     { 
      base.OnCreate(savedInstanceState); 

      var toolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);    
      toolbar.Title = "Hi"; 
      SetSupportActionBar(toolbar); 


      SetContentView(Resource.Layout.Main); 
     } 

     public override bool OnCreateOptionsMenu(IMenu menu) 
     { 
      MenuInflater.Inflate(Resource.Menu.menu_toolbar, menu); 
      return base.OnCreateOptionsMenu(menu); 
     } 

    } 

Répondre

1

Vous avez besoin pour remplacer OnCreateOptionsMenu au lieu de OnPrepareOptionsMenu parce que OnPrepareOptionsMenu est pour manipuler des éléments de menu uniquement utiliser cette

public override bool OnCreateOptionsMenu(IMenu menu) 
{ 
    MenuInflater.Inflate(Resource.Menu.menu_toolbar, menu); 
    return true; 
} 

au lieu de cette

public override bool OnPrepareOptionsMenu(IMenu menu){ 
     MenuInflater.Inflate(Resource.Menu.menu_toolbar, menu); 
     return base.OnPrepareOptionsMenu(menu); 
} 
+0

Merci. Mais j'ai essayé ça, je l'ai dit dans le post. Ça ne marche pas. :/J'ai un projet qui fonctionne et je ne peux pas comprendre pourquoi il ne fonctionne pas. – OnScreen

+0

@OnScreen suivez la réponse et essayez de déplacer 'SetContentView (Resource.Layout.Main);' après 'base.OnCreate (savedInstanceState);' –

+0

J'ai essayé. Ça ne marche pas. J'utilisais var pour trouver la barre d'outils, mais maintenant j'utilise la classe. Et je découvre que ma barre d'outils arrive à zéro. – OnScreen

0

La barre d'outils doit être au même niveau que le DrawerLayout. Vous pouvez faire une mise en page relative pour inclure la barre d'outils en haut et le DrawerLayout ci-dessous.

+0

J'ai essayé. J'utilisais var pour trouver la barre d'outils, mais maintenant j'utilise la classe. Et je découvre que ma barre d'outils arrive à zéro. – OnScreen