2013-03-27 68 views
20

如果有某種方法通過引用另一種已定義的顏色來定義colors.xml中的顏色,我一直在想時間和地點。好吧,我嘗試了它,事實上,它看起來好像你可以使用@ color/XXX引用其他顏色。Android - 通過引用其他已定義的顏色來定義顏色

例如一個人的colors.xml可能看起來像:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    … 
    <color name="primary_blue">#205081</color> 
    <color name="action_bar_text">@color/primary_blue</color> 
    … 
</resources> 

但我不希望別人直接使用我的primary_blue定義 - 它沒有任何意義,使一些藍色的東西沒有上下文。我提出的最佳解決方案是在primary_blue這樣的直接顏色前添加前綴,然後評論他們不應該直接使用。

有沒有辦法阻止使用這些直接的顏色,同時仍然允許我的colors.xml文件引用它們?我在想也許樣式或apklib可以幫助我。

+0

如果你打算在不同的情況下使用相同的顏色,而不是「上下文」沒有任何意義。此外,如果action_bar_color可以訪問,那麼將是primary_blue顏色。 – Luksprog 2013-03-27 05:50:00

+0

這將會非常有用,因爲它會強制編碼實踐。太糟糕了,沒有辦法在xml中隱藏名稱空間。 – 2016-05-30 07:15:43

回答

1

在這裏添加一個答案,以防有人在將來遇到此問題。

創建Android庫時,您可以使用mark resources as public。任何不在public.xml文件中的資源都被認爲是私有的。

隱含使屬性私有不僅可防止庫的用戶體驗從內部資源庫代碼完成的建議,但您還可以重命名或刪除私人資源而不破壞你的庫的客戶。私人資源被過濾掉代碼完成和主題編輯器,並且當您嘗試引用私有資源時,Lint會警告您。