当筵意气临九霄,星离雨散不终朝。这篇文章主要讲述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包:文章图片
然后为你
AppCompatActivity
和Activity
扩展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)】然后它在我身边工作正常。
推荐阅读
- Android棒棒糖中的透明actionBar和statusBar
- android中的pidstat命令()
- 如何在android中实现视图滑动
- java.lang.NoClassDefFoundError(解析失败:Lcom / google / android / gms / common / internal / zzbp)
- 使用activity方法后,Android应用程序与RabbitMQ断开连接
- Xamarin.Android AndroidEnvironment文件未应用于更改GC Bridge实现
- 如何在新的app界面中的jTessBoxEditor(tesseract)中生成tiff / box()
- 触摸无法在Android设备上的Unity上使用
- JAX-RS(泽西实现)ExceptionMapper 没有捕获ConstraintViolationException