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

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>

错误:未找到与给定名称匹配的资源(位于'value?android:attr / actionBarSize'处的'layout_marginTop')。


你找到这个问题的解决方案了吗?谢谢,伙计! - Paul
2个回答

16

你应该只使用:

android:layout_marginTop="?attr/actionBarSize"

请参考: http://developer.android.com/training/basics/actionbar/overlaying.html

"...拥有 android: 前缀的适用于 Android 平台内置该样式的版本,没有前缀的适用于旧版本,从 Support 库中读取样式..."

对我来说需要替换的是

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"的扩展来解决这个问题。


8
你是怎么解决这个问题的?如果你找到了答案,请回答这个问题。这可能对未来的用户有用。 - Deses

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接