2013-03-27 10 views
20

colors.xmlで定義されている別の色を参照して色を定義する方法がある場合は、もう一度納得しました。まあ、試しましたが、実際には@ color/XXXを使って他の色を参照できるように見えます。Android - 定義済みの他の色を参照して色を定義する

例えば1の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

+0

これは良いコーディング方法を強制するので、本当に便利です。あまりにも悪いことに、XMLで名前空間を隠す方法がありません。 –

答えて

1

誰かがこれを将来にわたって実行する場合に備えて、ここに回答を追加してください。

Androidライブラリを作成する場合は、mark resources as publicとすることができます。ファイルpublic.xmlにないリソースはすべてプライベートと見なされます。

暗黙的に属性をプライベートにすることは、ライブラリのユーザーが内部ライブラリのリソースからコード補完候補を取得できないようにするだけでなく、ライブラリのクライアントを壊さずにプライベートリソースの名前を変更したり削除することを可能にします。プライベートリソースはコード補完とテーマエディタから除外され、Lintはプライベートリソースを参照しようとすると警告します。

関連する問題