4

我正在尝试在 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 项目中?您能否提供一些步骤来让一个简单的示例正常工作?

4

1 回答 1

13

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

  1. 打开示例项目并在发布模式下仅构建“ActionBarSherlock”项目。确保最低目标 android 版本为 4.0.3(必需)

  2. 获取 dll 并在您的项目中引用它。我发现如果您的项目的最低 android 版本为 2.2,您可以让它编译得很好——我发现如果您使用配置文件版本 2.1,它就不起作用,但这可能是我的应用程序。也许您的最低版本太低?我还将我的“目标”android 设置为最新的......我不知道这是否也有帮助。

  3. 我说引用 dll 而不是项目的原因是您将获得正确的智能感知。否则,正如您在示例项目中看到的那样,它不会(使工作变得痛苦!)。

  4. 确保您在项目中引用了 v4 支持库 (Mono.Android.Support.v4)

  5. 最后一步是需要更改默认主题以使用 Sherlock 主题。(例如,请参见下面的 xml)

  6. 添加操作栏等时使用 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 发送有关此问题的支持消息,一旦解决问题,我将编辑此帖子。

EDIT: To fix the issue I have mentioned above make sure that the project options -> Application -> Minimum Android to target option is at LEAST 4.0.3. Your minSdkVersion can still be 7/8 or whatever so it will still run in older android versions. It also means you have to be careful you dont code in stuff that is for higher versions.

于 2013-01-09T22:58:33.213 回答