【问题标题】:Android layout error: "Resource id <res_id> is not of type STYLE (instead attr)"Android 布局错误:“资源 id <res_id> 不是 STYLE 类型(而不是 attr)”
【发布时间】:2013-01-23 09:39:11
【问题描述】:

我看到一个我以前从未见过的错误,它阻止了我的一些布局文件在 Eclipse 中呈现。它们在运行时渲染良好。

图形布局编辑器(和我的错误日志)中显示的错误是: “资源 id 0x1010081 不是 STYLE 类型(而是 attr)”

我在我的 R 文件中搜索了资源 id 0x1010081,但我找不到它,所以我猜测也许我与内置的 Android attr 有冲突。我还验证了我下面的所有样式属性都指向实际样式而不是 attr。任何帮助表示赞赏。

这是我的完整布局代码:

<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>

【问题讨论】:

  • 能否附上完整的错误日志和您的styles.xml?
  • @JustinJasmann:styles.xml 已列出。我唯一得到的是上面列出的那个。
  • 你为什么不接受正确的答案?

标签: android android-layout layout resources android-resources


【解决方案1】:

我也有这个问题,显示相同的资源 ID。当我将 android:spinnerMode 更改为 "dialog" 时它消失了,所以我怀疑这不是您的代码的问题。

有问题的 id 指的是 android 属性spinnerStyle。请参阅R.attr 的文档

我找到了一个解决方法,即替换

android:spinnerMode="dropdown"

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

【讨论】:

  • 这非常有效。谢谢! OP 应该将您的答案视为正确答案。
  • 注意 @android:style/Widget.Spinner.DropDown 需要 API 级别 11
  • 虽然它也为我消除了错误,但我在运行时收到“Error inflating class android.widget.Spinner”。
  • 但它的抛出: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
  • 我将 min SDK 设置为 15,但仍然收到“Binary XML file line #14: Error inflating class android.widget.Spinner”
【解决方案2】:

您是否尝试过将每个样式属性更改为如下内容:

style="?attr/text_large_bold_white"

【讨论】:

  • 我的布局中的样式是styles.xml中定义的自定义样式。我已经在帖子中列出了。
【解决方案3】:

正如 JulianSymes 所说,问题是

android:spinnerMode="dropdown"

他的解决方案(替换 android:spinnerStyle="@android:style/Widget.Spinner.DropDown")在我的手机上运行,​​但在我的平板电脑上却没有

我的解决方案更简单:删除该行。

spinnerMode="dropdown" 是默认的,所以没必要

【讨论】:

    【解决方案4】:

    删除所有style 元素,然后一个接一个地添加它们,并始终检查它是否仍然呈现。所以你至少可以找出谁是罪魁祸首。

    【讨论】:

    • 我尝试删除所有样式标签,但我仍然看到错误可能与系统样式有冲突?
    • 您是否有自定义主题,可能会间接添加样式?
    • 我确实有一个自定义主题,其父主题是 Theme.Sherlock。然而,这很简单。我已将其添加到帖子中。
    • 您可以尝试完全删除自定义主题后错误是否仍然存在?
    • 没有帮助,没有区别。
    【解决方案5】:

    由于谷歌针对此错误指出此页面,并且为了后代......

    就我而言,一时兴起,我关闭并重新打开了 eclipse,然后错误消失了,eclipse 渲染预览也没问题。

    尽管我坚信这可能并非所有人的情况。

    如果你觉得自己一切都做对了,我猜,重启 Eclipse 不会有什么坏处。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-28
      • 2020-07-02
      • 2015-04-02
      • 1970-01-01
      • 2019-07-01
      • 1970-01-01
      相关资源
      最近更新 更多