2012-02-04 9 views
27

Có cách nào để sử dụng một chủ đề khác tùy thuộc vào phiên bản SDK mà ứng dụng được cài đặt không?Chủ đề khác nhau cho các phiên bản Android SDK khác nhau

Lý do tôi hỏi là vì tôi muốn hỗ trợ tất cả cách quay lại SDK phiên bản 8, nhưng đối với những người dùng có ICS tôi muốn có thể tuân theo các tiêu chuẩn thiết kế cho ICS và sử dụng chủ đề Holo.

Tôi có thể xem từ Program different layouts for different versions in android mà tôi có thể có thư mục values-v14, sẽ có tệp theme.xml để ghi đè khai báo chủ đề. Tuy nhiên, nó sẽ không biên dịch nếu tôi tham khảo Theme.Holo. Tôi tin rằng điều này là do tôi có các thông tin sau trong AndroidManifest.xml của mình

<uses-sdk android:minSdkVersion="8" /> 
<uses-sdk android:targetSdkVersion="11"/> 

Mọi con trỏ sẽ được đánh giá cao.

UPDATE: - OK vì vậy đây là tác phẩm của tôi: - AndroidManifest.xml:

<application 
    android:icon="@drawable/icon" 
    android:label="@string/app_name" 
    android:name=".Refunder" 
    android:theme="@style/MainTheme" 
    > 

res/values ​​/ themes.xml:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="MainTheme" parent="@android:style/Theme.Light.NoTitleBar"> 
     <item name="android:typeface">normal</item> 
     <item name="android:textSize">15sp</item> 
    </style> 
</resources> 

res/values-v11/themes .xml:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="MainTheme" parent="@android:style/Theme.Holo"> 
     <item name="android:typeface">normal</item> 
     <item name="android:textSize">15sp</item> 
    </style> 
</resources> 

Điều này phù hợp với bài viết tôi đọc ở đây: - http://android-developers.blogspot.com/2012/01/holo-everywhere.html

Khi tôi làm điều này tôi nhận được một lỗi biên dịch trong Eclipse nói rằng: -

error: Error retrieving parent for item: No resource found that matches the given name '@android:style/Theme.Holo' 
+0

Bạn có thể đăng hai tệp theme.xml của mình không? – hankystyles

Trả lời

15

gì bạn đang làm (với thư mục giá trị-v14 của bạn) là đúng. Bạn chỉ cần thay đổi mục tiêu xây dựng của bạn để cho phép nó biên dịch. (nhấp chuột phải vào dự án của bạn, chọn thuộc tính, chọn Android, Chọn Android 14 trở lên)

Đảm bảo bạn không sử dụng bất kỳ tính năng nào lớn hơn android: minSdkVersion vì nó sẽ gây ra Lực đóng nếu được sử dụng trên phiên bản cũ hơn Android.