Android菜单未显示工具栏 - 仅限操作栏

时间:2017-10-04 19:18:46

标签: c# android xamarin xamarin.android

我正在尝试显示菜单。我可以显示菜单,但只能显示ActionBar。但它不会去工具栏。我尝试使用没有ActionBar的Theme AppCompat,但工具栏仍然是空的。

menu_toolbar.xml - 这是正确的,它正在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>

我的主题是:

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

我的主要布局:

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

我的班级(我也尝试过OnPrepareOptionsMenu)

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

    }

2 个答案:

答案 0 :(得分:1)

您需要覆盖OnCreateOptionsMenu而不是OnPrepareOptionsMenu,因为OnPrepareOptionsMenu仅用于操作菜单项,因此请使用此

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

而不是

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

答案 1 :(得分:0)

工具栏必须与DrawerLayout处于同一级别。您可以创建相对布局以包括顶部的工具栏和下面的DrawerLayout。