R.styleable can not be resolved, why?

与世无争的帅哥 提交于 2020-01-09 07:42:26

问题


I have a resources.xml file located under direcotry values/ , That's

/values/resources.xml

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

In my java code, when I try to access this resource by R.styleable.TheMissingTabWidget , eclipse complain that styleable cannot be resolved or is not a field. Why? Why I can not access this resource? (I am using android 2.1-updated).


回答1:


plz make values/attrs.xml resources like this

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


According to the SDK Release Notes,

The android.R.styleable class and its fields were removed from the public API, to better ensure forward-compatibility for applications. The constants declared in android.R.styleable were platform-specific and subject to arbitrary change across versions, so were not suitable for use by applications. You can still access the platform's styleable attributes from your resources or code. To do so, declare a custom resource element using a in your project's res/values/R.attrs file, then declare the attribute inside. For examples, see "sdk"/samples/ApiDemos/res/values/attrs.xml. For more information about custom resources, see Custom Layout Resources. Note that the android.R.styleable documentation is still provided in the SDK, but only as a reference of the platform's styleable attributes for the various elements.

Have a look to the ApiDemos code and the file res/values/attrs.xml




回答3:


What you need to do is declare your styleable in attrs.xml, not resources.xml. Then you'll be able to refer to it from your code like this:

R.styleable.TheMissingTabWidget



回答4:


You can access your package level stylable like this

<yourpackagename>.R.styleable.name


来源:https://stackoverflow.com/questions/6675403/r-styleable-can-not-be-resolved-why

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!