2013-07-10 3 views
3

Resources 클래스는 res/values ​​/ colors에 정의 된 색상보다 우선 적용 할 수있는 색상을 설정할 수 있습니다. 모든 활동 getResources() 메서드를 재정 의하여 내 사용자 정의 자원 객체를 반환합니다. 프로그래밍 방식으로 색상을 수신하면 (Java 호출 getResources().getColor(R.color.xxx)) 모든 것이 예상대로 작동합니다. 문제는 XML 레이아웃 파일 내부입니다. 색상을 정의하면 (예 : textColor="@color/xxx") 항상 /res/values/colors.xml에있는 색상을 사용하고 재정의 한 색상은 사용하지 않습니다. 이 동작을 변경하는 방법이 있나요? XML에서 사용자 정의 리소스 객체를 사용하는 동안 beeing이 사용되는 것입니까?xml에서 작동하는 Context의 getResources()를 오버라이드합니다.

+0

'color.xml'안에 사용자 정의 색상 값을 넣을 수있는 한 가지 방법이 있습니다. 그런 다음 XML 파일뿐만 아니라 Java 파일에서도 액세스 할 수 있습니다. –

+0

아무도 RUNTIME에 colors.xml에 색상을 추가 할 수 없습니다 !!! –

+0

예. 나는 동의한다. 나는 네가 나를 오해 한 것 같아. 난 그냥 기본 색상을 재정의 대신에, 당신은 왜 다른 이름으로 XML 파일 (런타임에 아닌)에 사용자 정의 색상을 추가하고 대신 사용하지 않는 것이 좋습니다. 나는 당신의 유스 케이스를 얻고 동일한 것을 필요로하고있다. –

답변

1

AttributeSet의 실제 구현을 찾을 수 없으면 전체 아이디어가 잘못되었음을 깨달았습니다. 리소스가 미리 컴파일되어 있기 때문에 Resources 클래스를 사용하여 동일한 방법으로 소스를 생성하지는 않습니다. 해결책은 Build-System 그 자체입니다. 라이브러리를 사용하면 리소스가 리소스를 사용하는 응용 프로그램보다 우선 순위가 낮습니다. 따라서 내 라이브러리를 사용하는 응용 프로그램은 colors.xml에서 같은 이름을 사용하여 고유 한 라이브러리를 정의함으로써 일종의 라이브러리 자원을 무시할 수 있습니다.