【问题标题】:Using ActionBarSherlock in Mono Android在 Mono Android 中使用 ActionBarSherlock
【发布时间】:2013-01-09 08:51:07
【问题描述】:
我正在尝试在 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 项目吗?您能否提供一些步骤来让一个简单的示例正常工作?
【问题讨论】:
标签:
android
android-actionbar
actionbarsherlock
【解决方案1】:
好的,这就是我的工作方式......
打开示例项目并在发布模式下仅构建“ActionBarSherlock”项目。确保最低目标 android 版本为 4.0.3(必需)
获取 dll 并在您的项目中引用它。我发现如果您的项目的最低 android 版本为 2.2,您可以让它编译得很好——我发现如果您使用配置文件版本 2.1,它不起作用,但这可能是我的应用程序。也许您的最低版本太低?我还将我的“目标”android 设置为最新的......我不知道这是否也有帮助。
我说引用 dll 而不是项目的原因是您将获得正确的智能感知。否则,正如您在示例项目中看到的那样,它不会(让工作变得痛苦!)。
确保您在项目中引用了 v4 支持库 (Mono.Android.Support.v4)
最后一步是需要更改默认主题以使用 Sherlock 主题。 (例如见下面的xml)
在添加操作栏等时使用 ActionbarSherlock.* 命名空间...
添加 ActionbarSherlock 后的示例清单:
<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 版本中运行。这也意味着你必须小心,不要在用于更高版本的东西中编码。