Uygulamam için 2 seçilebilir temaya sahip olmak istiyorum. Bunu yapmak için, aşağıdaki gibi bazı nitelikler tanımladım:
<attr format="color" name="item_background" />
Sonra, şunun gibi iki temayı da oluşturdum:
<style name="ThemeA">
<item name="item_background">#123456</item>
</style>
<style name="ThemeB">
<item name="item_background">#ABCDEF</item>
</style>
Bu yöntem harika çalışıyor ve birkaç temayı kolayca oluşturup değiştirmeme izin veriyor. Sorun şu ki , yalnızca Görünümlerde kullanılabiliyor, Drawables'da kullanılamıyor .
Örneğin, bir mizanpajın içindeki bir View'dan bir değere başvurmak işe yarar:
<TextView android:background="?item_background" />
Ancak aynı şeyi bir Drawable'da yapmak:
<shape android:shape="rectangle">
<solid android:color="?item_background" />
</shape>
Uygulamayı çalıştırırken şu hatayı alıyorum:
java.lang.UnsupportedOperationException: Can't convert to color: type=0x2
?item_background
Kodlanmış bir renk kullanmak yerine işe yarıyor, ancak bu benim temalarımı kullanmama izin vermiyor. Ben de denedim ?attr:item_background
ama aynı şey oluyor.
Bunu nasıl yapabilirim? Ve neden Görünümlerde çalışıyor ama Drawables'da çalışmıyor? Bu sınırlamayı belgelerin hiçbir yerinde bulamıyorum ...