Android の CalendarView のマテリアル デザイン バックポート。目標は、プラットフォームの実装と 100% 同等ではなく、マテリアルのルック アンド フィールを持つことです。
ステップ 1. JitPack リポジトリをビルド ファイルに追加する
allprojects {
repositories {
.. .
maven { url ' https://jitpack.io ' }
}
}
ステップ 2. 依存関係を追加する
dependencies {
implementation ' com.github.prolificinteractive:material-calendarview:${version} '
}
MaterialCalendarView
レイアウトまたはビュー階層に追加します。OnDateSelectedListener
を設定するか、 MaterialCalendarView.getSelectedDates()
を呼び出します。ここで Javadoc を入手できます
例:
< com .prolificinteractive.materialcalendarview.MaterialCalendarView
xmlns : app = " http://schemas.android.com/apk/res-auto "
android : id = " @+id/calendarView "
android : layout_width = " match_parent "
android : layout_height = " wrap_content "
app : mcv_showOtherDates = " all "
app : mcv_selectionColor = " #00F "
/>
ここで入手可能なすべてのドキュメントを必ず確認してください。
このライブラリの目的の 1 つは、カスタマイズ可能であることです。多くのオプションには次のものがあります。
これらすべておよびそれ以上のことは、デコレータ API を介して実行できます。デコレータのドキュメントを確認してください。
マテリアル CalendarView 2.0 では、API のコアに大きな変更が加えられ、 java.util.Calendar
の使用からjava.time.LocalDate
に移行しました。また、これはパブリック API に影響を与えることはありません (まだCalendarDay
を使用しています)。Calendar とLocalDate
Calendar
の機能は少し異なります。その一例として、月は 1 (1 月) から 12 (12 月) までインデックス付けされるようになりました。 getDate()
を使用するとCalendarDay
からLocalDate
にアクセスできます。
また、このリリースには重大な変更はなく、ウィジェットに大幅な改善が加えられています。ユーザー向けのカスタマイズ (カスタム フォント、長押しリスナー、平日の表示/非表示) が追加されたほか、さまざまな修正、サンプル アプリの改善、一般的なクリーンアップが行われました。詳細については、CHANGELOG とリリースのセクションを必ず確認してください。
私たちは最近、最新の Gradle に更新し、ライブラリをホスティング サービス Jitpack に移行することにしました。詳細については、インストールのセクションを参照してください。
重大な変更: setFirstDayOfWeek
、 setMin/MaxDate
、およびsetCalendarDisplayMode
State
オブジェクトに移動されました。これは、これらが単純なセッターではないことが不明瞭なため、必要でした。個別に副作用があり、完全なアダプター/日付範囲の再計算をトリガーしました。ビューの一般的な使用法には、 onCreate
中にこれらすべての不変条件を事前に設定することが含まれますが、これら 4 つすべてを設定すると多くの無駄が生じることはユーザーには知られていませんでした。言うまでもなく、特定のものには副作用があり、現在の日または選択した日付をリセットするものもありました。その結果、同じ 4 つのメソッドを異なる順序で呼び出すと、異なる状態が生じる可能性があり、これは問題です。
ほとんどの場合、これらの不変条件の設定を次のように置き換えるだけで済みます。
mcv . state (). edit ()
. setFirstDayOfWeek ( Calendar . WEDNESDAY )
. setMinimumDate ( CalendarDay . from ( 2016 , 4 , 3 ))
. setMaximumDate ( CalendarDay . from ( 2016 , 5 , 12 ))
. setCalendarDisplayMode ( CalendarMode . WEEKS )
. commit ();
mcv.state().edit()
以前に設定された値を保持します。 mcv.newState()
デフォルト値を使用して新しい状態を作成します。 commit
呼び出すと、アダプターと日付範囲の再構築がトリガーされます。これらの状態変更は、MCV への最初の変更として (現在の日付や選択された日付などを構成する前に) 実行することをお勧めします。状態が変更されたときにそれらの変更が保持されることは保証されません。
使用法の詳細については、「CUSTOMIZATION_BUILDER」を参照してください。
新規: setSelectionMode(SELECTION_MODE_RANGE)
が追加され、2 つの日付を選択し、日付の範囲全体を選択できるようになりました。この機能の開発に協力してくれた papageorgiouk に感謝します。
CHANGELOG でその他の変更を確認してください。
貢献してみませんか?フォークしてプル リクエストを送信してください。まずは問題を必ずチェックしてください。
マテリアル カレンダー ビューの著作権は、2018 Prolific Interactive にあります。 LICENSE ファイルに指定された条件に基づいて再配布できます。
マテリアル カレンダー ビューは Prolific Interactive によって維持され、資金提供されています。名前とロゴは Prolific Interactive の商標です。