2011-12-17 28 views
5

Tôi đang cố gắng để có thể vẽ hình dạng với hình dạng này:Cách tốt nhất để xử lý hình dạng khác biệt drawable 2.3.5 Android vs 4,0

enter image description here

này hoạt động đúng trong 1.6 đến 2.3.5 khi sử dụng sau:

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle"> 
<solid android:color="#cc6900"/> 

<corners android:radius="0.1dp" android:bottomRightRadius="7dp" android:bottomLeftRadius="0dp" 
android:topLeftRadius="0dp" android:topRightRadius="7dp"/> 

Tuy nhiên, khi chạy nó trên Galaxy Nexus, hay 4,0 Emulator, tôi có sử dụng điều này để có được bố trí giống nhau:

... 
<corners android:radius="0.1dp" android:bottomRightRadius="0dp" android:bottomLeftRadius="7dp" 
android:topLeftRadius="0dp" android:topRightRadius="7dp"/> 
... 

nào mang lại cho tôi này trên 1.6:

enter image description here

Vì vậy, về cơ bản, các phiên bản trước đó đã sử dụng tất cả bottomRight và bottomLeft trong cách này, và bây giờ 4,0 hiện nó trong một.

Có cách nào dễ dàng để tôi có thể sử dụng nó giống như trước 4.0 và cung cấp cho người dùng 4.0 giá trị thay đổi không? Nếu có thể, tôi muốn nếu tôi có thể giữ nó trong XML và không có nó trong mã.

Trả lời

12

Hm, có vẻ như chúng tôi đã phá vỡ khả năng tương thích lỗi khi chúng tôi sửa lỗi đó. ;)

Vì bạn đang xác định điều này trong XML có thể vẽ, hãy bao gồm phiên bản hoạt động trước Android 4.0 trong thư mục res/drawable/ và thư mục hoạt động trên Android 4.0+ trong thư mục khác có tên res/drawable-v14/. (14 là cấp API của Android 4.0.) Các thiết bị chạy Android 4.0 trở lên sẽ sử dụng phiên bản mới hơn.

Bạn có thể sử dụng kỹ thuật này tương tự để có hệ thống tự động chọn nguồn chính xác cho một loạt các tùy chọn cấu hình khác nhau, xem tại đây để biết thêm: http://developer.android.com/guide/topics/resources/providing-resources.html#AlternativeResources

+0

Brilliant, sửa chữa vấn đề! –

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