Tôi có câu hỏi về việc sử dụng tài liệu tham khảo trong một layer-list
drawable
.Tham chiếu màu trong <item> -Tag, bên trong <layer-list>
Tôi muốn sử dụng nút tùy chỉnh trong ứng dụng của mình, được làm bằng layer-list
.
- Đó là trận chung kết drawable
btn.xml
cho nút, làm bằng mộtselector
:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/btn_pressed" android:state_pressed="true"/>
<item android:drawable="@drawable/btn_normal"/>
</selector>
- Các ép-state-drawable
btn_pressed
trông như thế:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape android:shape="rectangle" >
<solid android:color="?custom_color" />
</shape>
</item>
<item android:drawable="@drawable/btn_normal"/>
</layer-list>
Phần thiết yếu là dòng, wh ere tôi tuyên bố màu sắc là một tham chiếu đến custom_color
, mà tôi xác định như sau.
- attrs.xml:
<resources>
<attr name="custom_color" format="reference|color" />
</resources>
- themes.xml:
<resources>
<style name="MyTheme" parent="android:Theme.Light.NoTitleBar">
<item name="custom_color">#ff33b5e5</item>
</style>
</resources>
Eclipse mang lại cho tôi không có lỗi gì cả, và nó biên dịch tốt. Nhưng khi tôi khởi động ứng dụng trên ICS Nexus S của tôi hoặc Trình mô phỏng (cho dù phiên bản nào), nó sẽ bị treo. Logcat chỉ ra những điều sau:
03-23 14: 33: 38.832: E/AndroidRuntime (636): Nguyên nhân: android.content.res.Resources $ NotFoundException: Tệp res/drawable/btn.xml từ tài nguyên drawable ID # 0x7f020006
[...]
03-23 14: 33: 38,832: E/AndroidRuntime (636): nguyên nhân: android.content.res.Resources $ NotFoundException: file res/drawable/btn_pressed.xml từ ID tài nguyên có thể kéo # 0x7f020009
Nếu tôi nhận xét o ut, các shape
-element trong layer-list
hoặc đặt màu cứng được mã hóa, mọi thứ hoạt động. Vì vậy, có vẻ là một vấn đề tham chiếu thuộc tính trong một danh sách lớp.
Vì vậy, có ai biết giải pháp cho vấn đề này không? Tôi muốn thay đổi màu sắc trong danh sách lớp đó, tùy thuộc vào chủ đề mà ứng dụng của tôi đang sử dụng.
Điều đó không hiệu quả, không. Nó thậm chí không biên dịch. – msal