1

這是新的默認DatePickerDialog部件的樣子,它是Android 5.0以後出現:Android的棉花糖自定義日曆/日期選擇器

enter image description here

這不太受我的項目經理很喜歡。他們想要的是「老式」全息日期選取器,因爲它曾經是棉花糖之前&棒棒糖。事情是這樣的:

enter image description here

我面前兩個選擇:

  • 使用具有相同的外觀由別人開發的現有日曆控件和如上感覺。
  • 使用完整的日曆功能創建我自己的日曆小部件。

如果我要創建我自己的小部件,那麼創建用戶界面非常簡單。我的問題是,我該如何編寫這種日曆的業務邏輯,即如何使用真實數據來支持它?我如何計算閏年和不同月份的天數? 最重要的是,我需要三個NumberPicker s 在最小和最大範圍內保持同步。它應該不是可以滾動超出最大和最小限制。這是我無法解決的問題。

這是我到目前爲止已經完成:

  • 我用 NumberPicker 小部件 DialogFragment, 內,我用 setMinValue()setMaxValue() 設定範圍每個NumberPicker
  • 當了一年的變化(比如2011至2012年),我用

    cal = new GregorianCalendar(y, m, d); 
        daysInMonth = cal.getActualMaximum(Calendar.DAY_OF_MONTH); 
    

    描述here計算當月的天數 。

  • 當從十二月用戶滾動到一月或一月至 12月,我以編程方式滾動年選擇器描述 here遞增或分別 遞減。
  • 通過使用setWrapSelectorWheel(),防止日間,月份和年份的選取器滾動超過其最小值和最大值。

所以我的問題是,是否有一個預先存在的小部件,如這個我可以使用?另外,是否有辦法用真實日曆數據備份NumberPicker,並讓它們在最短和最長日期範圍內同步滾動?請指導我。所有的答案將不勝感激。

編輯:

雖然給出答案的作品,值得注意的是,有一個更好的方法:在DialogFragment包裝一DatePicker

+0

你無關壓延業務邏輯。只需使用Calendar API並與您的用戶界面一起玩。 –

+0

@PankajKumar:Calendar API可以在這裏使用嗎?我的主要問題是在滾動月份時同步滾動三個採樣器,並防止採樣器滾動超過最小最大範圍(再次同步)... –

回答

1

您可以使用API​​的日期選擇器,並告訴它使用的全息設計使用此構造:DatePickerDialog (Context, int, DatePickerDialog.OnDateSetListener, int, int, int)

見在這個問題上的意見:DatePicker crash in samsung with android 5.0

您可能需要調整爲主題的位。

下面是我們如何在行動中使用這個:https://github.com/dmfs/opentasks/blob/master/src/org/dmfs/tasks/widget/TimeFieldEditor.java#L437

+0

感謝您的反饋......這對我有很大的幫助...如果沒有其他人給出更好的答案,我會將其標記爲正確的答案... :) –

+0

不知道答案可能會有多好;-) – Marten