Tôi hiện đang làm việc trên ứng dụng của mình dựa trên thiết kế của nó về chủ đề Holo. Toàn cầu những gì tôi muốn làm là làm việc nhưng tôi hơi bối rối về cách làm việc các thư mục values
, values-v11
và values-v14
.Kiểu và chủ đề về giá trị, thư mục values-v11 và values-v14
Vì vậy, tôi biết rằng:
values
được nhắm mục tiêu các API thua kém 11values-v11
được nhắm mục tiêu các API giữa 11 và 13values-v14
được nhắm mục tiêu các API vượt trội so với 13
Lúc đầu, tôi nghĩ rằng tôi đã phải chỉ định cho mỗi thư mục tất cả các phong cách cần thiết cho các ứng dụng nhưng sau đó tôi nhận ra một loại sy kế thừa gốc đã được đặt ra.
Vấn đề của tôi là tôi thực sự bối rối và không hiểu rõ cách thức hoạt động của kế thừa này giữa 3 thư mục này.
tôi đã thử nghiệm sau đây để thấy những hành vi trên điện thoại của tôi (chạy trên Android 4.0, vì vậy các thư mục values-v14
nên là một nạp):
Trong values
Tôi có một phong cách để thiết lập trong màu xanh màu chữ:
<style name="TextMedium" parent="@android:style/TextAppearance.Medium">
<item name="android:textColor">@color/Blue</item>
trong values-v11
tôi có một phong cách để thiết lập màu trắng màu sắc văn bản:
<style name="TextMedium" parent="@android:style/TextAppearance.Medium">
<item name="android:textColor">@color/White</item>
Trong values-v14
Tôi có một phong cách để thiết lập màu đỏ màu sắc văn bản:
<style name="TextMedium" parent="@android:style/TextAppearance.Medium">
<item name="android:textColor">@color/Red</item>
Đối với trường hợp đầu tiên ở trên (mỗi thư mục với một màu khác nhau), màu sắc được nạp trên văn bản của tôi có màu đỏ, nghĩa là thư mục values-v14
được ưu tiên.
Sau đó, nếu tôi nhận xét kiểu màu đỏ từ thư mục values-v14
, văn bản trở thành màu trắng. Điều đó có nghĩa là hệ thống sẽ lấy phong cách trong thư mục values-v11
ngay cả khi thiết bị đang nhắm mục tiêu thư mục values-v14
? Tôi nghĩ rằng nó có thể sử dụng thư mục values
theo mặc định nhưng không sử dụng values-v11
.
Nói chung, câu hỏi của tôi là, 3 thư mục này có hoạt động như cha mẹ và con không? Ý nghĩa rằng:
- Nếu thiết bị đang chạy trên một phiên bản API> 13, hệ thống sẽ tải
values-v14
sau đóvalues-v11
và cuối cùngvalues
. - Nếu thiết bị đang chạy trên API từ 11 đến 13, hệ thống sẽ tải
values-v11
và sau đóvalues
. - Nếu thiết bị đang chạy trên phiên bản API < 11, hệ thống sẽ chỉ tải
values
.
Nếu nó thực sự là cách nó hoạt động, có ý nghĩa sau đó để thiết lập tối đa các kiểu trong thư mục mẹ values
và chỉ thêm những kiểu cụ thể trong v11 hoặc v14?
Xin lỗi cho câu hỏi dài, tôi hy vọng nó là rõ ràng, điều này hệ thống chủ đề/phong cách được chỉ mô tả ngắn gọn trong hướng dẫn sử dụng Android và rất khó để tìm thông tin về cách thức hoạt động ...
Cám ơn bạn Cứu giúp!
'values-v14' nhắm mục tiêu API> = 14,' values-v11' nhắm mục tiêu API giữa (bao gồm) 11 và 13 ** nếu ** 'values-v14' hiện diện ** nếu không ** sẽ khớp với mọi phiên bản bắt đầu từ 11 trở lên. 'giá trị' là thư mục mặc định và nó sẽ là thư mục cuối cùng được đối sánh, bao gồm các cấp API khác không nằm trong thư mục' values-xx' khác. – Luksprog
Cảm ơn Luksprog. Dựa trên cơ chế đó, nó có nghĩa là tốt hơn là chỉ thiết lập trong các kiểu v11 và v14 mà không thể được sử dụng bởi các phiên bản thấp hơn? (và vì vậy để giữ cho các kiểu đơn giản giống như kiểu tôi đã đăng trong 'giá trị'?) –
Đó là ý tưởng, sử dụng các chỉ báo phiên bản khi sử dụng các thuộc tính được thêm từ phiên bản đó. Ví dụ, Honeycomb đã giới thiệu thuộc tính 'activateBackgroundIndicator' cho một' ListView'. Vì điều này không xuất hiện bên dưới '11', thư mục' values' sẽ không sử dụng thư mục này nhưng bạn có thể bao gồm thư mục 'values-v11' để tận dụng lợi thế của thuộc tính trong ứng dụng cho các phiên bản có nó. Nhưng bạn cần phải có các phong cách khác hiện tại nếu bạn có các thư mục khác nhau. – Luksprog