8

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

例子:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    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_width="@dimen/titles_size"
            android:layout_height="match_parent" />

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

</LinearLayout>

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

4

2 回答 2

16

你应该只使用:

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 上启动应用程序没有任何问题。

于 2014-01-28T18:59:51.187 回答
2

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

于 2011-12-30T18:39:38.013 回答