如何使用来自多个模块的多个dimens.xml文件?

时间:2016-07-20 13:31:56

标签: android android-resources

我有点困惑在AndroidStudio中如何处理多个dimens.xml文件(不是针对不同的屏幕分辨率和大小,而是来自多个库模块)。

我有一个AndroidStudio项目,它由一个主模块(可运行的应用程序)和几个库模块组成,我们可以调用它们module1module2

从我主模块布局文件夹中的xml文件中,我尝试访问dimens.xml module2中存储的值,例如android:paddingBottom="@dimen/...",但我只能找到{来自{ {1}}和主要模块本身。

我的问题是,如何从主模块和所有库模块中访问dimen值?为什么我能获得主要模块和module1值的建议,而不是module1's的建议?

我很感激有任何澄清。

2 个答案:

答案 0 :(得分:1)

Android Gradle插件和Android Studio最近进行了更改,以支持图书馆项目中公共和私人资源的概念。

这允许库隐藏其资源以免占用应用程序,从而防止污染资源命名空间并防止消费者使用可能在库的未来版本中更改的资源。

默认情况下,库项目中的所有资源都是私有的。

要公开资源,请创建一个新的public IEnumerator GetEnumerator(){ throw new NotImplementedException(); }资源文件,并在该文件中放置一个定义,如下所示:

res/values/public.xml

这会使名为<resources> <public name="libraryname_dimen" type="dimen"/> </resources> 的维度资源公开,因此如果您要发布AAR,则可供其他模块和/或消费应用程序使用。

您可以在Private Resources tools documentation了解更多信息。

答案 1 :(得分:1)

尝试使用android:paddingBottom="?attr/..."来访问此类值 这也适用于颜色。