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

Android XML: RuntimeException: не удалось разрешить атрибут по индексу 6

Привет, дорогой stackoverflower,

В моем проекте я использую новую "библиотеку дизайна Android". Проблема в том, что существует исключение во время выполнения, которое говорит (Im пытается создать FloatingButton):

 java.lang.RuntimeException: Failed to resolve attribute at index 6
        at android.content.res.TypedArray.getColorStateList(TypedArray.java:426)
        at android.support.design.widget.FloatingActionButton.<init>(FloatingActionButton.java:91)
        at android.support.design.widget.FloatingActionButton.<init>(FloatingActionButton.java:79)
        at android.support.design.widget.FloatingActionButton.<init>(FloatingActionButton.java:75)

Мне удалось выяснить, какой атрибут не может быть разрешен:

<style name="Widget.Design.FloatingActionButton" parent="android:Widget">
    <item name="android:background">@drawable/fab_background</item>
    <item name="backgroundTint">?attr/colorAccent</item>  **!! this one is missing !!**
    <item name="fabSize">normal</item>
    <item name="elevation">@dimen/fab_elevation</item>
    <item name="pressedTranslationZ">@dimen/fab_translation_z_pressed</item>
    <item name="rippleColor">?attr/colorControlHighlight</item>
    <item name="borderWidth">@dimen/fab_border_width</item>
</style>

Это находится в res/values ​​/styles/styles.xml в библиотеке android-design-library

Я прочитал в этом сообщение о том, что API lvl должен быть bis 21+. Но поскольку библиотека дизайна поддерживает API 7+, это не должно быть проблемой на самом деле.

Также стоит упомянуть, что я не включил библиотеку дизайна в качестве gradle -зависимости следующим образом:

 compile 'com.android.support:design:22.2.0'

Я добавляю библиотеку вручную в проект, потому что у Jenkins-сервера нет доступа в Интернет. Я обновил библиотеку поддержки-v4 до 21.2.0 также включена и обновлена ​​поддержка appcompat-v7.

Вот файл gradle файла android-design-library:

android {
compileSdkVersion 21
buildToolsVersion "21.1.2"

defaultConfig {
    minSdkVersion 17
    targetSdkVersion 21
}

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
}

Было бы здорово, если бы кто-то мог мне помочь.

4b9b3361

Ответ 1

Иди в эту проблему. Это потому, что мое приложение еще не использует AppCompat, но по-прежнему остается обычной поддержкой FragmentActivity. Это означает, что FloatingActionButton искал два атрибута темы и не мог их найти.

В частности, добавление этих отсутствующих атрибутов заставило его работать для меня без необходимости запускать AppCompat.

<LinearLayout
    ...
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    .../>

    <android.support.design.widget.FloatingActionButton
        ...
        app:backgroundTint="@color/{some color statelist}"
        app:rippleColor="@color/{some color statelist}"
        ... />

</LinearLayout>

Ответ 2

Вы можете решить эту проблему, используя Theme.AppCompat.Light в качестве родительской темы вашего действия.

Ответ 3

Удостоверьтесь, что ваша тема.

Моя тема:

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">#2196F3</item>
    <item name="colorPrimaryDark">#1565C0</item>
    <item name="colorAccent">#E91E63</item>
</style>

Ответ 4

Имела ту же проблему, что и вместо getApplicationContext() вместо Activity для извлечения layoutinflater и раздувания вида элемента для адаптера списка.

Ответ 5

Это связано с более чем одним файлом style.xml.

Добавьте строку ниже в файл build.gradle приложения:

compile 'com.android.support:design:22.2.0'

Ответ 6

В моем случае у меня была ошибка при setContentView(R.layout.my_layout). В my_layout я использовал app:errorEnabled="true" в TextInputLayout, который вызвал ошибку. Удалена эта строка, и она сработала.