【问题标题】:R.styleable can not be resolved, why?R.styleable 无法解决,为什么?
【发布时间】:2011-10-04 06:16:03
【问题描述】:

我有一个 resources.xml 文件位于目录 values/ 下,那是

/values/resources.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <declare-styleable name="TheMissingTabWidget"> 
        <attr name="android:divider" /> 
    </declare-styleable> 
</resources>

在我的 java 代码中,当我尝试通过 R.styleable.TheMissingTabWidget 访问此资源时,eclipse 抱怨 styleable 无法解析或不是字段。为什么?为什么我无法访问此资源? (我使用的是 android 2.1-updated)。

【问题讨论】:

标签: android android-layout android-emulator android-widget android-manifest


【解决方案1】:

请制作values/attrs.xml这样的资源

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="**com.admob.android.ads.AdView**"><--- where u want to use
       <attr name="backgroundColor" format="color" />
       <attr name="TextColor" format="color" />
       <attr name="keywords" format="string" />
       <attr name="refreshInterval" format="integer" />
    </declare-styleable>
</resources>

【讨论】:

    【解决方案2】:

    根据SDK Release Notes

    android.R.styleable 类及其字段已从公共 API 中移除,以更好地确保应用程序的前向兼容性。 android.R.styleable 中声明的常量是特定于平台的,并且可以跨版本进行任意更改,因此不适合应用程序使用。您仍然可以从您的资源或代码中访问平台的样式化属性。为此,请在项目的 res/values/R.attrs 文件中使用 a 声明自定义资源元素,然后在其中声明属性。例如,请参阅“sdk”/samples/ApiDemos/res/values/attrs.xml。有关自定义资源的更多信息,请参阅Custom Layout Resources。请注意,SDK 中仍提供 android.R.styleable 文档,但仅作为平台各种元素的样式属性的参考。

    查看 ApiDemos 代码和文件 res/values/attrs.xml

    【讨论】:

    • 这并没有解释你如何将R.styleable 放入 attrs 文件中。
    【解决方案3】:

    就我而言,我无意中使用了import android.R 而不是import com.&lt;mypackage&gt;.R

    &lt;mypackage&gt; 替换为您的包名称(或者只是删除当前的导入,让 Android Studio 完成剩下的工作)。

    【讨论】:

    • 这是拯救我的答案。它应该比其他答案有更多的赞成票,超过 15 个赞成票甚至不是一个答案。
    • 这应该是答案
    【解决方案4】:

    您可以像这样访问您的包级别样式

    <yourpackagename>.R.styleable.name
    

    【讨论】:

      【解决方案5】:

      我在 Android Studio 中显示了一个未定义的样式错误,但随后我注意到构建成功。我确实使缓存无效并重新启动,问题就消失了。
      (我花了很长时间才弄清楚。)

      【讨论】:

        【解决方案6】:

        请务必使用:

        import com.<your-package>.R
        

        不是:

        import android.R
        

        【讨论】:

          【解决方案7】:

          您需要做的是在 attrs.xml 中声明您的样式,而不是在 resources.xml 中。然后你就可以像这样从你的代码中引用它:

          R.styleable.TheMissingTabWidget
          

          【讨论】:

            猜你喜欢
            • 2011-05-16
            • 2012-10-29
            • 1970-01-01
            • 2017-07-20
            • 1970-01-01
            • 1970-01-01
            • 2020-05-31
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多