gpt4 book ai didi

android - Android Studio 中其他模块的引用资源

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:05:08 40 4
gpt4 key购买 nike

我有一个主应用程序模块以及一些库模块。

我的库模块如何从主应用程序模块引用资源。

例如:我的基本应用程序有一个 colors.xml,其中有一个名为“AppPrimary”的颜色项目,它是蓝色的。

在我的库中,我想要一个 xml 布局中的 View 来引用@color/AppPrimary 颜色,但这不起作用。

我怎样才能做到这一点?

编辑:我应该指定这不是专门的 appCompat 资源。只是通用字符串/颜色/样式/在我的主模块中。如何在我的库模块 colors.xml/strings.xml 中的同一项目中引用它们?

最佳答案

在您的库模块中,xml 布局引用 ?attr/colorPrimary 而不是 @color/AppPrimary

这引用了应用主题中的调色板属性。 IE。;

<item name="colorPrimary">@color/AppPrimary</item>

您还可以引用其他调色板属性,例如:

<item name="colorPrimaryDark">...</item> -> ?attr/colorPrimaryDark
<item name="colorAccent">...</item> -> ?attr/colorAccent

等等。

Please refer to this documentation

警告:
这些示例引用主题中的 AppCompat 实现。即没有 android: 命名空间前缀。

-- 编辑--

简短的回答是,您根本无法从引用库 colors.xml 文件的主模块中“获取”定义的颜色。

但是,您可以在主题中利用自定义属性来达到相同的效果。

这通过在库模块的 attrs.xml 文件中声明通用样式来实现,如下所示:

<declare-styleable name="BaseTheme">
<attr name="someColor" format="reference|color" />
</declare-styleable>

注意:styleable 的名称与此实现无关,因此请随意命名。

然后在“style.xml”或“theme.xml”文件中的主模块主题定义中,您需要将此属性设置为您想要共享的颜色,如下所示:

<style name="Theme.Example" parent="Theme.AppCompat.Light.NoActionBar">

<!-- Color Palette -->
<item name="colorPrimary">...</item>
<item name="colorPrimaryDark">...</item>
<item name="colorAccent">...</item>

<!-- Here we define our custom attributes -->
<item name="someColor">@color/dark_blue</item>

</style>

定义后,您可以在库模块 XML 代码中引用该属性。例如;

<TextView
...
android:textColor="?attr/someColor"
/>

关于android - Android Studio 中其他模块的引用资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30223972/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com