2

我想改變timepicker對話框片段的默認顏色。 現在我不知道我應該做什麼。如何更改默認顏色方案timepicker對話框片段?

這是我設法我的主題設置爲(withouth的的動作條):

enter image description here

但這是對話框我得到: enter image description here

這是我的XML樣式文件:

<?xml version="1.0" encoding="utf-8"?> 
 
<resources> 
 

 
    <style name="AppTheme" parent="Theme.AppCompat.Light"> 
 
     <item name="colorPrimary">@color/color_accent</item> 
 
     <item name="colorPrimaryDark">@color/color_secondary</item> 
 
     <item name="colorAccent">@color/color_accent</item> 
 
     <item name="android:statusBarColor">@color/color_primary</item> 
 
    </style> 
 
</resources>

我的色彩文件:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="flat_text">#f14268</color> 
    <color name="background_flatbtn">#fff</color> 
    <color name="color_accent">#f14268</color> 
    <color name="color_primary">#d83b5d</color> 
    <color name="color_secondary">#d83b5d</color> 
</resources> 

mytimepicker片段:

public class DialogHandler extends DialogFragment 
     implements TimePickerDialog.OnTimeSetListener { 
    Context context; 

    public DialogHandler(Context context){ 
     this.context=context; 

    } 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     // Use the current time as the default values for the picker 
     final Calendar c = Calendar.getInstance(); 
     int hour = c.get(Calendar.HOUR_OF_DAY); 
     int minute = c.get(Calendar.MINUTE); 
     TimePickerDialog dialog= new TimePickerDialog(new ContextThemeWrapper(getActivity(),R.style.AppTheme), this, hour, minute, DateFormat.is24HourFormat(getActivity())); 
     // Create a new instance of TimePickerDialog and return it 
     return dialog; 
    } 

    public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
     // Do something with the time chosen by the user 
     Toast.makeText(context, "your time is selected",Toast.LENGTH_LONG).show(); 
    } 
} 

我對話的呼叫:

DialogHandler newFragment = new DialogHandler(getApplicationContext()); 
     newFragment.show(getSupportFragmentManager() , "time_Picker"); 

請幫助我。 在此先感謝:)

+0

可能重複【如何改變的DatePicker和TimePicker對話框中Android的默認顏色?](http://stackoverflow.com/questions/11077530/how-to-change-the-default-color-of-datepicker-and-timepicker-dialog-in-android) –

回答

3

它花了一段時間,但我想通了! 在您的時間設置自定義主題選取器

轉到styles.xml頁面。 添加一個新的主題:

<style name="Dialog" parent="Base.Theme.AppCompat.Dialog"> 
     <itemname="android:timePickerDialogTheme">@style/AppTheme2</item> 
</style> 

定義繼承烏爾自定義應用程序的主題(保持對應用程序一致性)一個主題,這裏的timepicker對話的性質可以提到:

<style name="AppTheme2" parent="AppTheme.Base"> 
     <item name="android:windowIsFloating">true</item> 
</style> 

對我來說,這是我使用的整個應用程序的自定義主題:

<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar"> 
     <item name="colorPrimary">@color/primary</item> 
     <item name="colorPrimaryDark">@color/primary_dark</item> 
     <item name="colorAccent">@color/accent</item> 
</style> 

應用主題在呼籲時間選擇器

TimePickerDialog dialog= new TimePickerDialog(
new ContextThemeWrapper(getActivity(),R.style.Dialog) 
, this, hour, minute 
, DateFormat.is24HourFormat(getActivity())); 

從我猜測,如果你想了定製,你應該在風格AppTheme2其添加(或任何ü要叫它)

這裏是你可以添加到它的自定義列表(雖然不知道一切):

enter image description here

我希望這有助於。我在這裏不是專家,但是這似乎工作,以便即時與它去;)

1

您可以指定TimerPickerDialog直接在構造函數中的主題資源,而不需要在應用程序/活動的主題使用ContextWrapperandroid:timePickerDialogTheme的(它只能從API 21中獲得)。對於TimePickerDialog主題

例子:

<style name="TimePicker" parent="Theme.AppCompat.Light.Dialog"> 
    <item name="android:windowIsFloating">true</item> 
    <item name="colorPrimary">@color/primary</item> 
    <item name="colorPrimaryDark">@color/primary_dark</item> 
    <item name="colorAccent">@color/accent</item> 
</style> 

傳遞其資源id作爲第二個參數:

TimePickerDialog dialog = new TimePickerDialog(getActivity(), R.style.TimePicker, 
this, hour, minute, false);
相關問題