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'
}
}
Было бы здорово, если бы кто-то мог мне помочь.
Ответы
Ответ 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
, который вызвал ошибку. Удалена эта строка, и она сработала.