Android 扩展外部应用程序样式/主题

Android 扩展外部应用程序样式/主题,android,attributes,android-resources,android-theme,Android,Attributes,Android Resources,Android Theme,我想定义一个android样式,它扩展了在不同的应用程序/包中定义的样式,而不是作为库导入 根据android资源的xml引用定义: @[:]/ 似乎可以指定定义资源的外部资源(用于引用system resource@android:string/name) 现在,我有了我的主应用程序(package:com.example.test),它定义了一个属性和一个主题,如下所示: <declare-styleable name="TestAttrs"> <attr nam

我想定义一个android样式,它扩展了在不同的应用程序/包中定义的样式,而不是作为库导入

根据android资源的xml引用定义:

@[:]/
似乎可以指定定义资源的外部资源(用于引用system resource@android:string/name)

现在,我有了我的主应用程序(package:com.example.test),它定义了一个属性和一个主题,如下所示:

<declare-styleable name="TestAttrs">
    <attr name="testColor" format="color" />
</declare-styleable>

<style name="TestTheme" parent="@android:style/Theme">
    <item name="testColor">#FFFF0000</item>
</style>

#FFFF0000
如果在第二个不同的应用程序中,我尝试使用前面的包使用上面显示的语法定义样式,我会得到一个错误,说明找不到资源

 <style name="SubTheme" parent="@com.example.test:style/TestTheme">
    <item name="com.example.test:testColor">#FF00FF00</item>
 </style>

#FF00FF00
可以告诉编译器在哪里查找包吗


是否必须将初始样式/属性定义为共享?

是否声明了命名空间:

<resources xmlns:android="http://schemas.android.com/apk/res/android"
           xmlns:com.example.test="...external resource's namespace">

软件包\u name
不是指设备上的外部应用程序,而是指您正在构建的其他库项目软件包(每个软件包都有自己的资源表,然后合并)


要访问外部应用程序中的私有资源,您可以使用或公开ContentProvider,然后自己进行操作。

如何定义外部资源命名空间?我这样尝试:“不确定,您有权访问外部代码吗?”?它应该在那里。例如,对于admob,我必须执行
xmlns:ads=”http://schemas.android.com/apk/lib/com.google.ads“
是,我有访问权限。目前,我只玩测试项目,以便在开始认真使用它之前让它工作。好的,我知道我可以通过代码获取资源,但我需要通过xml访问它们。你们知道一种将已知的外部包公开到xml名称空间的方法吗?这是不可能的(我知道的)。我问它这个powerAmp皮肤项目的原因:他们正在这样做。但我不明白他们是如何构建的。看起来他们在每个皮肤的public.xml中设置id,然后在应用程序中通过调用PackageManager.getResourcesForApplication()引用它们,然后使用id(0x80050000等)。
<resources xmlns:android="http://schemas.android.com/apk/res/android"
           xmlns:com.example.test="...external resource's namespace">