Как получить «?android: attr / actionBarSize» с библиотекой совместимости

#android #android-layout #android-compatibility

#Android #android-макет #android-совместимость

Вопрос:

Я пытаюсь использовать фрагменты и 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’).

Комментарии:

1. вы нашли решение для этого? спасибо, приятель!

Ответ №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».

Комментарии:

1. Итак, что вы сделали, чтобы устранить проблему? Всегда отвечайте на ваши вопросы, если вы нашли ответ. Это может пригодиться будущим пользователям.