2

我想定义一种 android 样式,该样式扩展在未作为库导入的不同应用程序/包中定义的样式。

从这里对 android 资源的 xml 引用的定义:

@[<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>

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

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

4

2 回答 2

0

您是否声明了命名空间:

<resources xmlns:android="http://schemas.android.com/apk/res/android"
           xmlns:com.example.test="...external resource's namespace">
于 2013-09-16T13:10:17.057 回答
0

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

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

于 2013-09-18T09:56:06.373 回答