R.styleable 无法解决,为啥?
Posted
技术标签:
【中文标题】R.styleable 无法解决,为啥?【英文标题】: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 Hello, Gallery tutorial -- "R.styleable cannot be resolved" 的可能重复项 如果您仍然有问题 - 请检查您使用的是哪个 R。您必须使用您的项目 R 类 【参考方案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.<mypackage>.R
。
将<mypackage>
替换为您的包名称(或者只是删除当前的导入,让 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
【讨论】:
以上是关于R.styleable 无法解决,为啥?的主要内容,如果未能解决你的问题,请参考以下文章
NoClassDefFoundError:解析失败:Landroid/support/v7/appcompat/R$styleable
com.android.internal.R.styleable在哪里找到?
java.lang.NoClassDefFoundError:解析失败:Lcom/google/android/gms/R$styleable;在谷歌地图集成中
Android中View自定义XML属性详解以及R.attr与R.styleable的区别