내 응용 프로그램에 대해 2 개의 선택 가능한 테마를 갖고 싶습니다. 이를 위해 다음과 같은 몇 가지 속성을 정의했습니다.
<attr format="color" name="item_background" />
그런 다음 다음과 같이 두 테마를 모두 만들었습니다.
<style name="ThemeA">
<item name="item_background">#123456</item>
</style>
<style name="ThemeB">
<item name="item_background">#ABCDEF</item>
</style>
이 방법은 훌륭하게 작동하여 여러 테마를 쉽게 만들고 수정할 수 있습니다. 문제는 드로어 블이 아닌 뷰에서만 사용할 수 있다는 것입니다 .
예를 들어 레이아웃 내에서보기의 값을 참조하면 다음과 같이 작동합니다.
<TextView android:background="?item_background" />
하지만 드로어 블에서 똑같이하는 것은 다음과 같습니다.
<shape android:shape="rectangle">
<solid android:color="?item_background" />
</shape>
응용 프로그램을 실행할 때이 오류가 발생합니다.
java.lang.UnsupportedOperationException: Can't convert to color: type=0x2
?item_background
하드 코딩 된 색상을 사용하는 대신 작동하지만 내 테마를 사용할 수 없습니다. 나는 또한 시도 ?attr:item_background
했지만 같은 일이 발생합니다.
어떻게 할 수 있습니까? 뷰에서는 작동하지만 드로어 블에서는 작동하지 않는 이유는 무엇입니까? 문서 에서이 제한을 찾을 수 없습니다 ...