Xamarin - 取代操作栏(Android 7.1 - API 25)

当筵意气临九霄,星离雨散不终朝。这篇文章主要讲述Xamarin - 取代操作栏(Android 7.1 - API 25)相关的知识,希望能为你提供帮助。
我尝试通过替换文档中详细说明的默认操作栏来创建工具栏:Part 1 - Replacing the Action Bar,但应用程序无法运行并在SetActionBar(toolbar); 处抛出错误。以下是错误消息:

java.Lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_ACTION_BAR and set android:windowActionBar to false in your theme to use a Toolbar instead.

以下是完整错误:
Unhandled Exception: Java.Lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_ACTION_BAR and set android:windowActionBar to false in your theme to use a Toolbar instead.

这是我所有代码的git repo:Github CustomAndroidToolBar
我正在使用Visual Studio enterprise 2017,版本15.5
我哪里错了?
答案
Xamarin- 取代操作栏(Android 7.1-API 25)
您的项目中存在一些错误。
首先,请阅读此official sample,您正在使用一些错误的项目。你应该用
< item name="windowNoTitle">

代替
< item name="android:windowNoTitle"> .

像这样修改你的style.xml
< !-- Base theme applied no matter what API --> < style name="MyTheme" parent="Theme.AppCompat.Light.DarkActionBar"> < item name="windowNoTitle"> true< /item> < !--We will be using the toolbar so no need to show ActionBar--> < item name="windowActionBar"> false< /item> < !-- Set theme colors from http://www.google.com/design/spec/style/color.html#color-color-palette--> < !-- colorPrimary is used for the default action bar background --> < item name="colorPrimary"> #2196F3< /item> < !-- colorPrimaryDark is used for the status bar --> < item name="colorPrimaryDark"> #1976D2< /item> < !-- colorAccent is used as the default value for colorControlActivated which is used to tint widgets --> < item name="colorAccent"> #FF4081< /item> < /style>

二,安装Xamarin.Android.Support.v7.AppCompat nuget包:
Xamarin - 取代操作栏(Android 7.1 - API 25)

文章图片

然后为你AppCompatActivityActivity扩展MainActivity而不是use a Theme.AppCompat theme (or descendant) with this activity。
请注意,虽然您已在项目中编写了自定义主题,但您没有将它用于MainActivity。你可以阅读文件:Theming an Activity,为你添加主题MainActivity
[Activity(Label = "App3", MainLauncher = true, Theme = "@style/MyTheme")] public class MainActivity : AppCompatActivity { ... }

第三,在您的项目中,您使用的是Android.Widget.Toolbar,请将其更改为Android.Support.V7.Widget.Toolbar
在你的MainActivity
var toolbar = FindViewById< Android.Support.V7.Widget.Toolbar> (Resource.Id.toolbar); if (toolbar != null) { SetSupportActionBar(toolbar); SupportActionBar.Title = "Hello from Appcompat Toolbar"; }

在你的toolbar.xml
< android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" ...

【Xamarin - 取代操作栏(Android 7.1 - API 25)】然后它在我身边工作正常。

    推荐阅读