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

时间:2013-09-16 12:53:12

标签: android attributes android-resources android-theme

我想定义一个android样式,它扩展了在未导入为库的不同Application / package中定义的样式。

从xml引用的定义到android资源here

@[<package_name>:]<resource_type>/<resource_name>

似乎可以指定定义资源的外部 (用于引用系统资源 @android:string / name

现在,我有我的主应用程序(包: 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>

如果在第二个不同的应用程序中我尝试使用上一个包来使用上面显示的语法定义样式,我会收到错误消息,指出无法找到资源。

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

是否可以告诉编译器在哪里寻找包?

我必须将我的初始样式/属性定义为共享吗?

2 个答案:

答案 0 :(得分:0)

您是否声明了名称空间:

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

答案 1 :(得分:0)

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

要访问外部应用程序中的私有资源,您可以使用PackageManager.getResourcesForApplication()或公开ContentProvider并自行完成。