安卓布局错误:“资源ID <res_id> 不是类型为STYLE(而是属性)”

27

我在Android中看到了一个之前从未见过的错误,导致我的一些布局文件无法在Eclipse中渲染。但在运行时它们是正常的。

在图形化布局编辑器(和我的错误日志)中出现的错误是: “Resouce id 0x1010081不是样式类型(而是属性类型)”

我已经在我的R文件中搜索了资源id 0x1010081,但是找不到它,所以我猜可能与内置的Android属性发生了冲突。我还验证了下面所有的样式属性都指向实际的样式而不是属性。感谢任何帮助。

这是我的完整布局代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/bkg_light"
    android:padding="@dimen/padding_med" >

    <RelativeLayout
        android:id="@+id/relativeLayout_activity"
        android:layout_width="fill_parent"
        android:layout_height="@dimen/button_height"
        android:background="@drawable/xml_button"
        android:padding="@dimen/padding_med" >

        <TextView            
            style="@style/text_large_bold_white"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:text="@string/activity" />

        <TextView
            android:id="@+id/textView_activity"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginRight="@dimen/margin_med"
            android:layout_toLeftOf="@+id/textView_arrow_right_start_date" 
            android:text="@string/none_selected"/>

        <TextView
            android:id="@+id/textView_arrow_right_start_date"
            style="@style/arrow_right"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true" />
    </RelativeLayout>

    <!-- kv Duration -->

    <RelativeLayout
        android:id="@+id/relativeLayout_duration"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/relativeLayout_activity"
        android:layout_marginTop="@dimen/margin_large"
        android:background="@drawable/xml_button">

        <TextView
            android:id="@+id/textView_duration"
            style="@style/text_large_bold_white"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:text="@string/duration_lc" 
            android:paddingLeft="@dimen/padding_med"/>

        <Spinner
            android:id="@+id/spinner_duration"
            android:layout_width="wrap_content"
            android:layout_height="@dimen/button_height"
            android:layout_alignParentRight="true"
            android:entries="@array/array_durations"
            android:prompt="@string/duration_lc"
            android:spinnerMode="dropdown" 
            android:clickable="false"/>
    </RelativeLayout>

</RelativeLayout>

这是我的styles.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="arrow_right">
        <item name="android:textStyle">bold</item>
        <item name="android:textSize">@dimen/text_xxlarge</item>
        <item name="android:text">@string/arrow_right</item>
    </style>

    <style name="button_blue">
        <item name="android:textStyle">bold</item>
        <item name="android:textColor">@color/white</item>
        <item name="android:background">@drawable/selector_button_blue</item>
        <item name="android:padding">@dimen/padding_med</item>
    </style>

    <style name="button_blue_small">
        <item name="android:textStyle">bold</item>
        <item name="android:textColor">@color/white</item>
        <item name="android:background">@drawable/selector_button_blue_small</item>
        <item name="android:padding">@dimen/padding_med</item>
    </style>

    <style name="button_dark">
        <item name="android:textStyle">bold</item>
        <item name="android:textColor">@color/white</item>
        <item name="android:background">@drawable/selector_button_dark</item>
        <item name="android:padding">@dimen/padding_med</item>
    </style>

    <style name="button_light">
        <item name="android:textStyle">bold</item>
        <item name="android:textColor">@color/black</item>
        <item name="android:background">@drawable/selector_button_light</item>
        <item name="android:padding">@dimen/padding_med</item>
    </style>

    <style name="button_light_small">
        <item name="android:textStyle">bold</item>
        <item name="android:textColor">@color/black</item>
        <item name="android:textSize">@dimen/text_small</item>
        <item name="android:background">@drawable/selector_button_light</item>
        <item name="android:padding">@dimen/padding_small</item>
    </style>  

    <style name="text_small_gray_light">
        <item name="android:textSize">@dimen/text_small</item>
        <item name="android:textColor">@color/gray_light</item>
    </style>

    <style name="text_med_bold_gray_light">
        <item name="android:textStyle">bold</item>
        <item name="android:textSize">@dimen/text_med</item>
        <item name="android:textColor">@color/gray_light</item>
    </style>    

    <style name="text_large_bold_white">
        <item name="android:textStyle">bold</item>
        <item name="android:textSize">@dimen/text_large</item>
    </style>

    <style name="text_large_bold_black">
        <item name="android:textStyle">bold</item>
        <item name="android:textSize">@dimen/text_large</item>
        <item name="android:textColor">@color/black</item>
    </style>

    <style name="text_large_bold_gray_dark">
        <item name="android:textStyle">bold</item>
        <item name="android:textSize">@dimen/text_large</item>
        <item name="android:textColor">@color/gray_dark</item>
    </style>

    <style name="text_large_bold_gray_light">
        <item name="android:textStyle">bold</item>
        <item name="android:textSize">@dimen/text_large</item>
        <item name="android:textColor">@color/gray_light</item>
    </style>

    <style name="text_large_bold_white">
        <item name="android:textStyle">bold</item>
        <item name="android:textSize">@dimen/text_large</item>
        <item name="android:textColor">@color/white</item>
    </style>

    <style name="text_large_white">
        <item name="android:textSize">@dimen/text_large</item>
        <item name="android:textColor">@color/white</item>
    </style>
</resources>

这是我的自定义theme.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="Theme.P90X" parent="@style/Theme.Sherlock">
        <item name="android:textColor">#ffffffff</item>
    </style>
</resources>

1
你能附上完整的错误日志和styles.xml文件吗? - Justin Jasmann
@JustinJasmann:列出了styles.xml。我得到的唯一一个就是上面列出的那个。 - Karim Varela
1
你为什么没有接受正确的答案? - John
6个回答

72

我也遇到了这个问题,同样的资源ID出现了。当我将android:spinnerMode更改为"dialog"时,它就消失了,所以我怀疑这不是你代码的问题。

所涉及的ID是指Android属性spinnerStyle。请参阅R.attr文档。

我发现了一个解决方法,即将

android:spinnerMode="dropdown"

替换为

android:spinnerStyle="@android:style/Widget.Spinner.DropDown"


3
这个很完美。谢谢!原帖作者应该把你的回答标记为正确答案。 - pmont
5
注意:@android:style/Widget.Spinner.DropDown 需要 API 等级 11。 - Sofi Software LLC
1
虽然这也为我解决了错误,但在运行时我会收到“Error inflating class android.widget.Spinner”的错误。 - Patrick
2
但是它抛出了以下错误:04-19 15:55:44.161: E/AndroidRuntime(8799): java.lang.RuntimeException: Unable to start activity ComponentInfo: android.view.InflateException: Binary XML file line #14: Error inflating class android.widget.Spinner - Pratik Butani
1
我将min SDK设置为15,但仍然出现“Binary XML file line #14: Error inflating class android.widget.Spinner”错误。 - gswierczynski
显示剩余2条评论

4

您尝试过将每个样式属性更改为类似以下内容的形式吗:

style="?attr/text_large_bold_white"

我的布局中的样式是在styles.xml中定义的自定义样式。我已经在帖子中列出了它。 - Karim Varela

2

正如JulianSymes所说,问题在于

android:spinnerMode="dropdown"

他的解决方案(将android:spinnerStyle="@android:style/Widget.Spinner.DropDown"替换)在我的手机上运行,但在平板电脑上无法运行
我的解决方案更简单:删除该行。 spinnerMode="dropdown"默认情况下已经存在,因此它是不必要的。

0

由于谷歌将此错误指向了这个页面,为了后世,我想说...

在我的情况下,一时兴起,我关闭并重新打开了eclipse,问题就解决了,eclipse也没有问题地渲染预览。

尽管我坚信这种情况可能不适用于所有人。

如果你觉得你已经做了一切正确的事情,我猜,重新启动eclipse应该没什么坏处。


0

删除所有的style元素,然后逐个添加并始终检查其是否仍然呈现。这样,您至少可以找出哪些是有问题的。


我尝试删除所有样式标签,但仍然看到错误。也许与系统样式有冲突? - Karim Varela
你是否有自定义主题,可以间接地添加样式? - Ridcully
我有一个自定义主题,其父级主题是Theme.Sherlock。它非常简单。我已将其添加到帖子中。 - Karim Varela
你能否尝试完全移除自定义主题后,再次检查错误是否仍然存在? - Ridcully
没有帮助,没有任何区别。 - Karim Varela

0
通过在Gradle中降级版本解决了问题: implementation 'com.google.android.material:material:1.7.0'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接