我正在尝试在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')。
答案 0 :(得分:15)
你应该使用:
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上启动应用程序,没有任何问题。
答案 1 :(得分:2)
我认为问题在于actionbar附带了android 3.0,你使用的是2.2。但是有一种方法可以通过名为“actionbarsherlock”的扩展来跳过这个。