我正在尝试在 Mono Android 应用程序中实现 ActionBar。有人可以向我提供在我的解决方案中包含 ActionBar 项目的步骤吗?我已经看到了在这个 url 上提供的示例
https://github.com/xamarin/monodroid-samples/tree/master/ActionBarSherlock

我是否必须在该示例中简单地添加对 ActionBarSherlock 项目的引用?当我尝试添加对该项目的引用时,我收到许多错误,例如“错误检索项目的父项:找不到与给定名称'android:TextAppearance.Holo.Widget.ActionBar.Menu' 匹配的资源”。在文件 abs_styles.xml 中

有没有其他人成功地将 ActionBarSherlock 添加到 Mono Android 项目中?您能否为我提供使简单示例工作的步骤?

最佳答案

好的,这就是我让它工作的方式......

  • 打开示例项目并在 Release模式下仅构建“ActionBarSherlock”项目。确保最低目标android版本为4.0.3(必需)
  • 获取 dll 并在您的项目中引用它。我发现如果您的项目的最低 android 版本为 2.2,您可以让它编译得很好 - 我发现如果您使用配置文件版本 2.1 它不起作用,但这可能是我的应用程序。也许你的最低版本太低了?我还将我的“目标”android 设置为最新的...我不知道这是否也有帮助。
  • 我说引用 dll 而不是项目的原因是您将获得正确的智能感知。否则,正如您在示例项目中看到的那样,它不会(使工作变得痛苦!)。
  • 确保您在项目中引用了 v4 支持库 (Mono.Android.Support.v4)
  • 最后一步是需要更改默认主题以使用 Sherlock 主题。 (例如,请参见下面的 xml)
  • 添加 Actionbars 等时使用 ActionbarSherlock.* 命名空间...

  • 添加 ActionbarSherlock 后的示例 list :
    <manifest ...>
        <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" />
        <application android:label="IDNT" android:theme="@style/Theme.Sherlock.Light.DarkActionBar" android:icon="@drawable/Icon">
        </application>
    </manifest>
    

    当心:所有这些都存在一个小问题...如果您的项目的最低版本低于 3.0(即根据我的示例为 2.2)并且您使用链接进行编译(即仅 SDK 程序集),您将收到错误“Mono。 Cecil.ResolutionException:无法解析 Android.Database.IDatabaseErrorHandler'。我目前正在向 Xamarin 发送有关此问题的支持消息,并会在我找到修复程序后编辑此帖子。

    编辑:要解决我上面提到的问题,请确保项目选项 -> 应用程序 -> 最低 Android 目标选项至少为 4.0.3。您的 minSdkVersion 仍然可以是 7/8 或任何其他版本,因此它仍然可以在较旧的 android 版本中运行。这也意味着你必须小心不要在更高版本的东西中编码。

    10-07 13:13
    查看更多