2013-03-27 2 views
20

colors.xml에 정의 된 다른 색상을 참조하여 색상을 정의하는 방법이 있다면 시간과 시간을 다시 보았습니다. 음, 시도해 보았지만 실제로는 @ color/XXX를 사용하여 다른 색상을 참조 할 수있는 것처럼 보입니다.안드로이드 - 다른 정의 된 색상을 참조하여 색상 정의

예를 들어 하나의 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과 같은 '직접적인'색상을 접두어로 사용하고 직접 사용해서는 안된다는 것입니다.

직접 색상을 사용하지 못하도록 방지하는 방법이 있습니까? 그렇다면 색상 파일을 참조 할 수 있습니까? 아마도 스타일이나 apklib가 나를 도울 수 있다고 생각하고 있습니다.

+0

"컨텍스트"와 다른 상황에서 동일한 색상을 사용하려는 경우에는 실제로 의미가 없습니다. 또한 action_bar_color에 액세스 할 수 있으면 primary_blue 색상이됩니다. – Luksprog

+0

이것은 좋은 코딩 방법을 강요하므로 실제로 유용합니다. 너무 나쁜 XML에서 네임 스페이스를 숨길 방법이 없습니다. –

답변

1

향후 누구나이 문제를 해결할 수 있도록 답변을 추가하십시오.

Android 라이브러리를 만들 때 mark resources as public 수 있습니다. public.xml 파일에없는 자원은 비공개로 간주됩니다.

암시 적으로 특성을 개인으로 설정하면 라이브러리 사용자가 내부 라이브러리 리소스의 코드 완성 제안을 경험할 수있을뿐만 아니라 라이브러리의 클라이언트를 손상시키지 않고 개인 리소스의 이름을 바꾸거나 제거 할 수 있습니다. 개인 자원은 코드 완성 및 테마 편집기에서 필터링되며, Lint는 개인 자원을 참조하려고 할 때 경고합니다.

관련 문제