5
จะอ้างอิงแอตทริบิวต์สไตล์จาก drawable ได้อย่างไร?
ฉันต้องการมี 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> วิธีนี้ใช้ได้ผลดีทำให้ฉันสร้างและปรับเปลี่ยนธีมต่างๆได้อย่างง่ายดาย ปัญหาคือว่าดูเหมือนว่ามันสามารถนำมาใช้เฉพาะในการเข้าชมและไม่อยู่ใน Drawables ตัวอย่างเช่นการอ้างอิงค่าจากมุมมองภายในเค้าโครงใช้งานได้: <TextView android:background="?item_background" /> แต่การทำเช่นเดียวกันใน Drawable ไม่ได้: <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เหมือนกัน แต่สิ่งเดียวกันก็เกิดขึ้น ฉันจะทำสิ่งนี้ได้อย่างไร? และเหตุใดจึงทำงานใน Views แต่ใช้ไม่ได้ใน …