【问题标题】: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】:

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

    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 发送有关此问题的支持消息,并会在我解决问题后编辑此帖子。

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

    【讨论】:

    • 谢谢。我错过了清单的补充。感谢您的帮助!
    猜你喜欢
    • 2012-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-10
    • 1970-01-01
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多