You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Android XML资源中引用库模块中定义的颜色

问题:Android库模块中资源的XML引用方式

背景与原代码情况

  • 主模块Fragment布局文件路径:app/src/main/res/layout/fragment_main.xml
  • 原颜色资源定义在主模块的app/src/main/res/values/colors.xml,内容如下:
<resources>
    <color name="bg_line">#E7E7E7</color>
    ...
</resources>
  • 原布局中引用该颜色的代码:
<RelativeLayout android:background="@color/bg_line" ... >
    ...
</RelativeLayout>

重构需求

将颜色bg_line迁移至库模块mylib的mylib/src/main/res/values/colors.xml中,该库模块的Manifest文件包名配置为:

<manifest package="de.k3b.mylib" ...>

核心问题

如何在主模块的fragment_main.xml中正确引用库模块里的bg_line颜色资源?

参考与尝试过的无效方式

根据Android官方文档,资源引用格式为:

resource reference:
In Java: R.color.filename
In XML: @[package:]color/filename

但未找到[package:]的实际使用示例,已尝试以下无效引用方式:

  • android:background="@android:color/bg_line"
  • android:background="@app:color/bg_line"
  • android:background="@mylib:color/bg_line"
  • android:background="@de.k3b.mylib:color/bg_line"

使用的Android Studio版本:Electric Eel | 2022.1.1 Patch 2

正确解决方案

正确的引用方式是使用库模块的Manifest包名作为前缀,代码如下:

android:background="@de.k3b.mylib:color/bg_line"

同时需要确保以下几点:

  1. 主模块app已在build.gradle中正确依赖:mylib模块:
dependencies {
    implementation project(":mylib")
}
  1. 库模块mylib的colors.xml中确实存在bg_line的定义:
<resources>
    <color name="bg_line">#E7E7E7</color>
    ...
</resources>
  1. 清理并重新构建项目(依次点击Android Studio菜单栏的Build > Clean Project和Build > Rebuild Project),避免缓存导致的引用识别异常。

若之前尝试该格式无效,多数是缓存问题,重新构建后即可正常识别。

内容的提问来源于stack exchange,提问作者k3b

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 08:13:30