如何使用兼容库获取“?android:attr/actionBarSize”

Posted

技术标签:

【中文标题】如何使用兼容库获取“?android:attr/actionBarSize”【英文标题】:How to get "?android:attr/actionBarSize" with Compatibility Library 【发布时间】:2011-12-07 07:56:15 【问题描述】:

我正在尝试在 android 2.2 项目中使用 Fragments 和 ActionBar。使用“?android:attr/actionBarSize”时出现错误,如何正确获取和设置该值?

例子:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_
    android:layout_
    android:id="@+id/frags">

    <fragment class="com.example.android.hcgallery.TitlesFragment"
            android:id="@+id/frag_title"
            android:visibility="gone"
            android:layout_marginTop="?android:attr/actionBarSize"
            android:layout_
            android:layout_ />

    <fragment class="com.example.android.hcgallery.ContentFragment"
            android:id="@+id/frag_content"
            android:layout_
            android:layout_ />

</LinearLayout>

错误:未找到与给定名称匹配的资源(位于“layout_marginTop”,值为“?android:attr/actionBarSize”)。

【问题讨论】:

您找到解决方案了吗?谢谢老兄! 【参考方案1】:

你应该只使用:

android:layout_marginTop="?attr/actionBarSize"

见http://developer.android.com/training/basics/actionbar/overlaying.html

"...带有 android: 前缀的版本适用于以下 Android 版本 在平台中包含样式,没有前缀的样式是 对于从支持库中读取样式的旧版本..."

替我替换

android:layout_marginTop="?android:attr/actionBarSize" 

android:layout_marginTop="?attr/actionBarSize" 

帮助在 Android 2.2 和 Android 4.3 上启动应用程序没有任何问题。

【讨论】:

【参考方案2】:

我认为问题在于actionbar 带有android 3.0 而您使用的是2.2。但是有一种方法可以通过一个名为“actionbarsherlock”的扩展来跳过这个。

【讨论】:

那么,你做了什么来解决这个问题?如果您找到了答案,请务必回答您的问题。它对未来的用户可能会派上用场。

以上是关于如何使用兼容库获取“?android:attr/actionBarSize”的主要内容,如果未能解决你的问题,请参考以下文章

arm如何获取wifi列表

函数范围的静态变量如何导致与共享库中函数代码的未来使用不兼容

如何在 OS X 上使用 ruby​​ 2.3 解决 mysql2 gem 的“不兼容的库版本”?

如何在 iOS 上构建具有最大兼容性的静态库?

库版本之间的 Swift 兼容性

将 Windows 库调用转换为 POSIX 以实现 Linux 兼容性