首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android : RuntimeException:未能解析索引6中的属性

Android : RuntimeException:未能解析索引6中的属性
EN

Stack Overflow用户
提问于 2015-06-02 11:45:40
回答 12查看 70K关注 0票数 62

你好,亲爱的百合花,

在我的项目中,我正在使用新的"android设计库“。问题是,有一个运行时异常,它显示(我试图创建一个FloatingButton):

代码语言:javascript
复制
 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)

我找出了哪些属性不能被解析:

代码语言:javascript
复制
<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>

它位于android-design-库中的res/value/样式/contentes.xml中。

我在this文章中读到,API应该是双21+。但是,由于设计库支持API 7+,这实际上不应该是一个问题。

还值得一提的是,我还没有像这样将设计库作为等级依赖项包括在内:

代码语言:javascript
复制
 compile 'com.android.support:design:22.2.0'

我手动将库添加到项目中,因为Jenkins服务器没有Internet访问权限。我已经将support-v4库更新为21.2.0,并且appcompat支持-v7也包括并更新了。

下面是android-design-library gradle文件:

代码语言:javascript
复制
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"

defaultConfig {
    minSdkVersion 17
    targetSdkVersion 21
}

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

如果有人能帮我,那就太好了。

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2015-06-02 20:33:30

我自己也遇到了这个问题。这是因为我的应用程序还没有使用AppCompat,仍然只是普通的支持FragmentActivity。这意味着FloatingActionButton正在寻找两个主题属性,却找不到它们。

具体来说,添加这些缺失的属性使它对我有效,而无需开始使用AppCompat。

代码语言:javascript
复制
<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>
票数 43
EN

Stack Overflow用户

发布于 2017-10-30 07:58:47

由于使用了getApplicationContext()而不是Activity来检索LayoutInflater并为列表适配器膨胀项视图,所以出现了同样的问题。

票数 38
EN

Stack Overflow用户

发布于 2015-07-12 06:47:18

您可以通过使用Theme.AppCompat.Light作为活动的父主题来解决这个问题。添加:原因是在FloatingActionButton中使用内部的默认样式之一是如下所示:

backgroundTint是指另一个属性colorAccent,它应该是在主题中声明的度量,否则,异常可能会抛出。但是colorAccent是在AppCompat主题中声明的,并且在sdk Theme.To度量中没有声明我们可以在运行中正确地使用设计库,其中一个简单的方法是测量AppCompat主题(如Theme.AppCompat.Light )的使用情况。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30595187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档