2015-05-28 27 views
6

我使用一個DialogFragment打開DatePickerDialog不可能讓我DatePickerDialog使用旋轉​​式的編程

public class DatePickerFragment extends DialogFragment{ 

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 

    // Use the current date as the default date in the picker 
    final Calendar c = Calendar.getInstance(); 
    int year = c.get(Calendar.YEAR); 
    int month = c.get(Calendar.MONTH); 
    int day = c.get(Calendar.DAY_OF_MONTH); 


    // Create a new instance of DatePickerDialog and return it 
    DatePickerDialog DatePickerDialog = new DatePickerDialog(getActivity(), (ProfileCreationActivity)getActivity(), year, month, day); 
    return DatePickerDialog; 
} 

我得到一個日曆的樣子,在那裏我寧願一個微調的樣子。

我想:

datePickerDialog.getDatePicker().setCalendarViewShown(false); 

datePickerDialog.getDatePicker().setLayoutMode(1); 

,但它不工作。

請注意,我希望微調器查找一項活動,但我希望將日曆視圖用於其他活動。所以我不能改變整個應用程序風格。我需要一種活動的自定義樣式。

+0

你應該有什麼工作。事情,讓你去嗯... –

+0

[這個答案](http://stackoverflow.com/a/33138181/2869508)只用一條線爲我工作。 –

回答

7

我已經找到了在下面的帖子解釋(描述非常類似地雷的問題):

Android Material Design Inline Datepicker issue

事實上setCalendarViewShown(假)和setSpinnersShown(真),顯然是不工作再也沒有最新版本。

我們必須使用像這樣的顯式XML屬性android:datePickerMode =「spinner」

問題是我沒有任何XML佈局使用DialogFragment(只是一個日期選擇器對話框)。所以我不能設置任何XML屬性。

解決方案是使用請求的屬性創建一個具有XML佈局文件的專用自定義對話框。

3

你可以把它編程,不需要創建具有微調新的XML,我只是改變了我的AppTheme(V21)的風格和工作;-)

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 
    <item name="colorControlActivated">@color/colorPrimary</item> 
    <item name="android:timePickerDialogTheme">@style/PickerDialogCustom</item> 
    <item name="android:datePickerDialogTheme">@style/PickerDialogCustom</item> 
    <item name="alertDialogTheme">@style/AlertDialogCustom</item> 
</style> 

<style name="PickerDialogCustom" parent="AlertDialogCustom"> 
    <item name="android:textColor">@color/colorPrimary</item> 
    <item name="android:textColorPrimary">@color/colorPrimaryDark</item> 
    <item name="colorControlNormal">@color/greyLight500</item> 
    <item name="android:layout_margin">2dp</item> 
    <item name="android:datePickerMode">spinner</item> 
</style> 

<style name="AlertDialogCustom" parent="Theme.AppCompat.Light.Dialog.Alert"> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorAccent">@color/colorPrimary</item> 
    <item name="android:positiveButtonText">@color/colorPrimary</item> 
    <item name="android:negativeButtonText">@color/greyDark200</item> 
    <item name="buttonBarNegativeButtonStyle">@style/negativeButton</item> 
    <item name="android:datePickerStyle">@style/PickerDialogCustom</item> 
</style> 

記住保持的支持< 21只需加上這一行,該命令在> = 21時被忽略。

datePickerDialog.getDatePicker().setLayoutMode(1); 
相關問題