R.styleable无法解决,为什么?

时间:2011-07-13 07:19:00

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

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

/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抱怨样式无法解析或不是字段。为什么?为什么我无法访问此资源? (我正在使用android 2.1更新)。

7 个答案:

答案 0 :(得分:17)

像这样制作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>

答案 1 :(得分:14)

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

答案 2 :(得分:4)

就我而言,我无意中完成了import android.R而不是import com.<mypackage>.R

<mypackage>替换为您的软件包名称(或删除当前导入,然后让Android Studio完成其余操作)。

答案 3 :(得分:2)

我在Android Studio中显示了一个未定义的可样式化错误,但随后我注意到构建成功。我做了Invalidate Caches&Restart,问题消失了。
(我花了很长时间才弄清楚。)

答案 4 :(得分:2)

请务必使用:

import com.<your-package>.R

不是:

import android.R

答案 5 :(得分:0)

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

R.styleable.TheMissingTabWidget

答案 6 :(得分:0)

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

<yourpackagename>.R.styleable.name