Подтвердить что ты не робот

Библиотека Android ActionBarCompat

У меня возникли проблемы с использованием библиотеки поддержки ActionBarCompat, которая была выпущена вчера. Я обновил репозиторий поддержки и включил путь к репозиторию appcompat-v7 в build.gradle, поскольку Крис Банес указал в DevBytes - https://www.youtube.com/watch?v=6TGgYqfJnyc.

dependencies {
compile ('com.android.support:support-v4:18.0.+')
compile ('com.android.support:appcompat-v7:18.0.+')}

Сборка идет хорошо, и я могу использовать классы, такие как ActionBarActivity из этой библиотеки, но я не могу использовать стили и любые ресурсы, поэтому я не могу использовать следующие темы: @style/Theme.AppCompat и т.д. Я думал, что найду исходные файлы в... /sdk/extras/android/.../ "supportrepo", поэтому я хотел бы ссылаться на него как ActionBarSherlock на gradle, но это не похоже на правильный ответ.

Что я делаю неправильно? Спасибо.

4b9b3361

Ответ 1

Я использую Android Studio, и у меня такая же проблема разрешения res в моей values/styles.xml.

В нем говорится, что он не может разрешить @style/Theme.AppCompat.Light, но во время компиляции (gradle) и времени выполнения все работает отлично (Android 2.3.3 и 4.3).

Я хотел бы избавиться от предупреждения о невозможности разрешения res.

Как сообщить Android Studio, что это res можно найти в репозитории appcompat-v7?
(Этот вопрос был связан с ошибкой в ​​Android Studio, которая уже исправлена.)


Ниже вы видите, что я сделал. Я надеюсь, это поможет. Предложения оценены.
Источник для библиотеки appcompat можно найти на github.

Gradle интеграция:

dependencies {
    ...
    compile group:'com.android.support', name:'appcompat-v7', version:'18.0.+'
    ...
}

Style файлы:

значения/styles.xml:

<resources>

    <!--
        Base application theme, dependent on API level. This theme is replaced
        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
    -->
    <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
        <!--
            Theme customizations available in newer API levels can go in
            res/values-vXX/styles.xml, while customizations related to
            backward-compatibility can go here.
        -->
    </style>

    <!-- Application theme. -->
    <style name="AppTheme" parent="@style/Theme.AppCompat.Light">
        <item name="actionBarStyle">@style/ActionBar.Solid.Custom</item>
    </style>

    <style name="ActionBar.Solid.Custom" parent="@style/Widget.AppCompat.Light.ActionBar.Solid">
        <item name="background">@drawable/ab_solid_custom</item>
        <item name="displayOptions">homeAsUp|showHome|showCustom</item>
    </style>

</resources>

значения-V14/styles.xml:

<resources>

    <!--
        Base application theme for API 14+. This theme completely replaces
        AppBaseTheme from BOTH res/values/styles.xml and
        res/values-v11/styles.xml on API 14+ devices.
    -->
    <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
        <!-- API 14 theme customizations can go here. -->
    </style>

    <!-- Application theme. -->
    <style name="AppTheme" parent="@style/Theme.AppCompat.Light">
        <item name="android:actionBarStyle">@style/ActionBar.Solid.Custom</item>
    </style>

    <style name="ActionBar.Solid.Custom" parent="@android:style/Widget.Holo.Light.ActionBar.Solid">
        <item name="android:background">@drawable/ab_solid_custom</item>
        <item name="android:displayOptions">homeAsUp|showHome|showCustom</item>
    </style>

</resources>

MainActivity (требуется только расширение):

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Views.inject(this);

        setupNavigationDrawer();
    }
}

AndroidManifest.xml(установка андроида: тема обязательна):

    <activity
            android:name="com.example.app.MainActivity"
            android:theme="@style/AppTheme"
            android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

Ответ 2

Известна ошибка (http://code.google.com/p/android/issues/detail?id=56312), где Android Studio IDE будет отмечать стиль как красный (эта ошибка для ActionBarSherlock, но проблема заключается в том, чтобы использовать стили аар, а также источники, которые не видны для Android Studio).

В частности, комментарий # 8 (http://code.google.com/p/android/issues/detail?id=56312#c4) показывает наблюдаемое поведение, а комментарий № 10 (http://code.google.com/p/android/issues/detail?id=56312#c10) отмечает, что редактор макета исправлен, но редактор кода не является.

Таким образом, программа должна строить и работать нормально, просто покажите стиль в красном, если смотреть в редакторе стиля XML.

Ответ 3

Я еще не пробовал Gradle, но я не уверен, но, похоже, вам также нужно скопировать ресурсы в ваш проект. Он содержит Theme.AppCompat.

Я получил успех в Eclipse, выполнив следующие шаги.

Импортируйте android-support-v7-appcompat как проект libray из нижележащего пути (вы могли бы сохранить sdk на другом пути)

D:\ADT-пачка окно-x86\ADT-пачка окно-x86\SDK\Extras\Android\поддержка\v7

Я просто добавил эту библиотеку в свой проект, и все получилось из коробки.

Ответ 4

Я также добавил те же 2 строки в раздел зависимостей в файле build.gradle. Компиляция начала работать, но я получил ошибки времени выполнения. Затем я обнаружил опцию Инструменты > Android > Проект синхронизации с Gradle Файлы. Казалось, это трюк. (Я на Android Studio 0.2.9)

Ответ 5

В моем случае, Lastest Studio 0.8.1

Создайте новый проект и установите стиль в AppTheme. затем сбой.

Мое решение:

Файл → Структура проекта → Зависимости → + (плюс) → выберите appcompact, support,....

И исправлена ​​ошибка.

спасибо.

Ответ 6

Cf https://plus.google.com/113735310430199015092/posts/ef5LyGyMddy

Дэвид Ван де Вен

Кроме того, кто-то забыл обновить репозиторий поддержки, поэтому любой с помощью студии android будет gradle создавать перерыв при попытке для использования новой библиотеки поддержки.

Роман Нурик

+ Дэвид Ван де Вен, мы работаем над этим.