2012-03-13 11 views
77

Tôi muốn sử dụng chủ đề Holo.Light trên các thiết bị hỗ trợ và quay lại chủ đề Light thông thường trên các thiết bị khác.Làm thế nào để sử dụng chủ đề Holo.Light, và rơi trở lại 'Light' trên các thiết bị pre-honeycomb?

Hiện tại, tham chiếu Holo.Light hoạt động tốt trên 3.0+, nhưng API cũ hơn chỉ đơn giản là hoàn nguyên về chủ đề 'tối' mặc định. Tôi có thể đạt được những gì tôi muốn với kế thừa phong cách?

Trả lời

182

Bạn cần phải tạo ra một chủ đề tùy chỉnh và lưu nó trong một số thư mục để cuối cùng thiết lập chủ đề này như một sự mặc định cho các ứng dụng

Thứ nhất, trong các giá trị thêm một themes.xml như thế này:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="MyAppTheme" parent="@android:style/Theme.Light.NoTitleBar"> 
     <!-- Any customizations for your app running on pre-3.0 devices here --> 
    </style> 
</resources> 

Sau đó, tạo một thư mục với tên "giá trị-v11" (Android 3.0+) trong thư mục res và đặt một themes.xml như thế này

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="MyAppTheme" parent="@android:style/Theme.Holo.Light"> 
     <!-- Any customizations for your app running on 3.0+ devices here --> 
    </style> 
</resources> 

Cuối cùng, tạo một thư mục với na tôi "giá trị-v14" (Android 4.0 trở lên) trong thư mục res và tạo ra một themes.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="MyAppTheme" parent="@android:style/Theme.DeviceDefault.Light.NoActionBar"> 
     <!-- Any customizations for your app running on 4.0+ devices here --> 
    </style> 
</resources> 

Với DeviceDefault ứng dụng của bạn allways trông hoàn hảo trong bất kỳ thiết bị của bất kỳ công ty (HTC Samsung ...) mà thêm chủ đề tùy chỉnh đã tạo cho Android 4

CHỈNH SỬA: Giao diện của Samsung (TouchWiz) không tôn trọng tính năng này và ứng dụng sẽ rất xấu trên các thiết bị của Samsung. Nó chủ đề Holo tốt hơn đặt :(

Cuối cùng trong manifest.xml bạn

<application 
     ... 
     android:theme="@style/MyAppTheme"> 
+1

Aargh, tôi là một thằng ngốc, tôi nên đã nhận ra điều này Cảm ơn –

+2

Ghi bầu lên và chấp nhận câu trả lời xin vui lòng – Aracem

+1

@Aracem, điều gì làm bạn có ý nghĩa bởi "rất xấu xí" nó sẽ sử dụng.!? chủ đề ánh sáng cũ hay tệ hơn? – l33t

0

Bạn cũng có thể chỉ cần đặt nền có màu trắng, và sau đó đi qua và làm cho tất cả các vật dụng khác của bạn màu đen, như thế này :

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    **android:background="#ffffff" 
    android:orientation="vertical" > 

<TextView 
    android:id="@+id/tvText" 
    android:text="@string/text" 
    **android:textColor="#000000" 
    android:textSize="12dp" />