Trong mô-đun thư viện của bạn trong cách bố trí tham khảo xml ?attr/colorPrimary
thay vì @color/AppPrimary
này tham khảo bảng màu thuộc tính từ chủ đề của ứng dụng. I E.;
<item name="colorPrimary">@color/AppPrimary</item>
Bạn cũng có thể tham khảo bảng màu khác các thuộc tính như:
<item name="colorPrimaryDark">...</item> -> ?attr/colorPrimaryDark
<item name="colorAccent">...</item> -> ?attr/colorAccent
và vân vân.
Please refer to this documentation
caveat:
Những ví dụ tham khảo việc thực hiện AppCompat trong chủ đề. tức là không có tiền tố không gian tên android:
.
- EDIT -
Câu trả lời ngắn gọn là bạn chỉ đơn giản là không thể 'get' một màu được xác định từ mô-đun chính của bạn tham chiếu đến thư viện của bạn colors.xml tập tin.
Tuy nhiên, bạn có thể tận dụng các thuộc tính được xác định tùy chỉnh trong chủ đề của mình để đạt được hiệu quả tương tự.
này hoạt động bằng cách tuyên bố một styleable chung trong tập tin attrs.xml
của bạn trong module thư viện, Một cái gì đó như thế này:
<declare-styleable name="BaseTheme">
<attr name="someColor" format="reference|color" />
</declare-styleable>
Lưu ý: Tên của styleable không có mang về thi này để cảm thấy tự do để đặt tên nó bất cứ điều gì bạn muốn.
Sau đó, trong định nghĩa chủ đề module chính của bạn trong 'style.xml' của bạn hoặc tập tin 'theme.xml' bạn sẽ muốn thiết lập thuộc tính này để các màu sắc mà bạn muốn chia sẻ, như thế này:
<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>
Khi điều này được xác định, bạn có thể tham chiếu thuộc tính trong mã XML mô-đun thư viện của mình. ví dụ.;
<TextView
...
android:textColor="?attr/someColor"
/>
Tôi nên chỉ định những tài nguyên này không phải là tài nguyên appcompat. Nói chỉ một màu chung được định nghĩa trong mô-đun ứng dụng chính có tên là "dark_blue". Làm thế nào để có được màu dark_blue trong thư viện colors.xml của tôi? – AnnonAshera
Tôi đã cập nhật câu trả lời cho bộ phần mềm tốt hơn trường hợp sử dụng của bạn. – r0adkll
Cảm ơn r0adkl Tôi đã thay đổi cấu trúc dự án. Thay vào đó, tôi đã xác định một thư viện lõi chung mà tất cả các mô-đun (thư viện và ứng dụng cơ sở) có thể tham chiếu với màu ứng dụng/chuỗi thông dụng, v.v. – AnnonAshera