Как получить "? Android: attr / actionBarSize" с библиотекой совместимости - PullRequest
8 голосов
/ 14 октября 2011

Я пытаюсь использовать фрагменты и ActionBar в проекте Android 2.2.Существует ошибка при использовании «? 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').

Ответы [ 2 ]

15 голосов
/ 28 января 2014

Вы должны просто использовать:

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 голосов
/ 30 декабря 2011

Я думаю, проблема в том, что actionbar поставляется с Android 3.0, а вы используете 2.2. Но есть способ пропустить это с помощью расширения, называемого "actionbarsherlock".

...