2012-06-18 29 views
16

Có cách nào thay đổi màu mặc định của hộp thoại DatePickerTimePicker không?Làm cách nào để thay đổi màu mặc định của hộp thoại DatePicker và TimePicker trong Android?

Đây là mã tôi đã cố gắng

<DatePicker 
        style="@style/date_picker" 
        android:background="#6495ED" 
        android:id="@+id/DatePicker" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="5dp" 
        android:layout_marginBottom="5dp" 
        android:layout_marginLeft="5dip" 
        android:layout_marginRight="5dip" /> 

<TimePicker 
        android:id="@+id/TimePicker" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="5dp" 
        android:layout_marginBottom="5dp" 
        android:layout_marginLeft="5dip" 
        android:layout_marginRight="5dip" /> 

Dưới hai dòng chỉ thay đổi màu nền, tôi muốn thay đổi màu sắc mặc định bạc của cả hai ngày và thời gian chọn.
Bất kỳ trợ giúp nào.

style="@style/date_picker" 
android:background="#6495ED" 

Trả lời

6

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 tên "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> 

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

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

Đây sẽ là cách để đi nếu thuộc tính cần thay đổi là công khai. Đáng buồn thay, không phải tất cả các thuộc tính được sử dụng cho các tiện ích kiểu là công khai. Thành thật mà nói, nó không rõ ràng những gì thuộc tính OP đang nói về. – Vikram

3

Tôi nghĩ rằng không có cách nào để thay đổi màu xám của các tiện ích chọn cục bộ cũ dễ dàng trong XML.

Tôi đề nghị bạn sử dụng thư viện HoloEverywhere để DatePicker và TimePicker trông thực sự tốt đẹp trên tất cả các nền tảng Android 2.1+.

3

bạn có thể thay đổi chủ đề của bộ chọn ngày bằng cách thay đổi chủ đề như thế này.

thay đổi các mục theo bạn.

<style name="date_picker" parent="@android:style/Widget.DeviceDefault.DatePicker"> 
<item name="android:divider">@drawable/dialog_divider</item> 

thay đổi các mục theo bạn. và đặt chủ đề này thành kiểu chọn bộ chọn dữ liệu của bạn

style="@style/date_picker" 
+0

Điều này chỉ hữu ích cho DatePicker và TimePicker mới, không phải cho Android 4.x thấp hơn với "màu bạc" đó. –

+1

@ JuliaHexen, @ KKC [Kiểm tra thư viện này] (https://github.com/luminousman/DatePicker) đây là giải pháp cho phiên bản Android 4.x thấp hơn với bạn thay đổi màu nền bạc của bạn –

+0

Đây là thư viện có Mã thời gian tự mã hóa và DatePicker, không phải với Lớp học Android gốc - đó là LinearLayouts "bình thường".Và nếu tôi sử dụng thư viện, tôi sẽ lấy HoloEverywhere vì nó đẹp hơn nhiều so với các widget cũ của Android ^^ –

8

Cách tốt nhất để thay đổi hộp thoại bộ chọn là thêm kiểu tùy chỉnh vào hộp chọn.

<style name="TimePickerTheme" parent="Theme.AppCompat.Light.Dialog"> 
    <item name="colorAccent">@color/color_primary</item> 
    <item name="android:layout_width">wrap_content</item> 
    <item name="android:layout_height">wrap_content</item> 
</style> 

TimePickerDialog timePicker = new TimePickerDialog(mContext, R.style.TimePickerTheme, fromListener, hour, min, false); 

Làm việc hoàn hảo cho tôi.

+0

Đây là một câu trả lời hoàn hảo! – krisDrOid

+0

ở đây đối tượng fromlistener là gì ??? –

+0

TimePickerDialog.OnTimeSetListener – Godwin