2021年1月30日土曜日

CompactCalendarViewで日付を取得する

Androidの開発でカレンダーを使うとなると、CalendarViewかCompactCalendarView。ダイアログ表示も含めるならDatePickerDialogもありますね。
今回はあまり使う機会のないCompactCalendarViewの日付取得方法を残しときます。

基本情報

設定

GitHub側にGradleの設定方法が書いてあるので参照すると
app/build.gradle
  1. dependencies {
  2. // : いろいろ書いてある
  3. // :
  4. //コレ↓追加
  5. implementation 'com.github.sundeepk:compact-calendar-view:3.0.0'
  6. }
※この最後の数字がバージョンになってるので、GitHub側を見て新しいモノを取ってきた方が良い。 

使い方

レイアウトにCompactCalendarViewを貼るだけ
  1. <?xml version="1.0" encoding="utf-8"?>
  2.  
  3. <androidx.constraintlayout.widget.ConstraintLayout
  4. xmlns:android="http://schemas.android.com/apk/res/android"
  5. xmlns:app="http://schemas.android.com/apk/res-auto"
  6. xmlns:tools="http://schemas.android.com/tools"
  7. android:layout_width="match_parent"
  8. android:layout_height="match_parent"
  9. tools:context=".MainActivity">
  10.  
  11. <com.github.sundeepk.compactcalendarview.CompactCalendarView
  12. android:id="@+id/calendar"
  13. android:layout_width="wrap_content"
  14. android:layout_height="wrap_content"
  15. app:layout_constraintBottom_toBottomOf="parent"
  16. app:layout_constraintEnd_toEndOf="parent"
  17. app:layout_constraintStart_toStartOf="parent"
  18. app:layout_constraintTop_toTopOf="parent" />
  19.  
  20. </androidx.constraintlayout.widget.ConstraintLayout>


日付タップでの動作を定義

CompactCalendarViewListenerのリスナーを設定するとonDayClickで日付タップの動作を検知できる。
とりあえずトーストを表示するだけ
  1. import com.github.sundeepk.compactcalendarview.CompactCalendarView;
  2. import com.github.sundeepk.compactcalendarview.CompactCalendarView.CompactCalendarViewListener;
  3.  
  4. public class MainActivity extends AppCompatActivity
  5. implements CompactCalendarViewListener {
  6. @Override
  7. public void onCreate(Bundle savedInstanceState) {
  8. super.onCreate(savedInstanceState);
  9. setContentView(R.layout.activity_main);
  10. ((CompactCalendarView)findViewById(R.id.calendar))
  11. .setListener(this);
  12. }
  13. @Override
  14. public void onDayClick(Date dateClicked) {
  15. Toast.makeText(getApplicationContext(),
  16. DateFormat.getDateInstance().format(dateClicked),
  17. Toast.LENGTH_SHORT
  18. ).show();
  19. }
  20.  
  21. @Override
  22. public void onMonthScroll(Date firstDayOfNewMonth) {}
  23. }

0 件のコメント:

コメントを投稿