2012-03-23 32 views
5

Tôi có câu hỏi về việc sử dụng tài liệu tham khảo trong một layer-listdrawable.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ột selector:
<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.

Trả lời

1

Ok, có vẻ như đây là một lỗi mà không được nhìn cho đến khi Android L.
Thông tin chi tiết trên Tracker Issue Android: Issue 26251

Nó cần được cố định trong Android L, nhưng ít nhất là thử nghiệm với Android L Preview trong Emulator nó dường như không hoạt động hoàn toàn, được nêu ra.Ít nhất nó sẽ không sụp đổ các ứng dụng, nhưng thay vì hiển thị màu sắc chính xác, nó chỉ mang lại cho tôi minh bạch (# 00ffffff). Có lẽ đây không phải là trường hợp trên các thiết bị và/hoặc khi Android L ổn định được phát hành.

0

Hãy thử android:color="@color/custom_color"

+0

Điều đó không hiệu quả, không. Nó thậm chí không biên dịch. – msal

Các vấn đề liên quan