web-dev-qa-db-ja.com

Androidカレンダービュー

私はAndroid開発にかなり慣れておらず、Androidアプリケーションにカレンダーを含める方法を探していますが、かなりひどいです。グーグルするとき。

  1. アプリケーションでデフォルトのカレンダーの種類のビューを使用する方法はありますか? (UIはおなじみなので、理想的です)

  2. 組み込みのオプションで失敗しましたが、使用できるカレンダーコントロールを備えた優れたライブラリはありますか?

私は同期するつもりはなく、そのすべて(少なくとも現時点では)は、ユーザーに情報を表示できるカレンダービューを探しているだけです。

12
Brian

Caldroidライブラリ( https://github.com/roomorama/Caldroid )を作成しました。これはセットアップが簡単で、最小/最大日付のセットアップ、無効な日付、日付範囲の選択、スワイプなどの多くの機能を備えています。月の変更、完全なローカライズ、ローテーションの適切なサポートなど。ルックアンドフィールを簡単にカスタマイズできます。誰かがそれが役に立つと思うかもしれないかどうか共有するだけです:)

32
thomasdao

私は Android-CalendarView 、Caldroidを試し、後でAndroid-times-squareに切り替えました。この改善:

  • 垂直スクロールにより、他の月への切り替えがはるかに高速になります(Caldroidで応答が遅いページ付けはありません)
  • インジケーター、強調表示された日付(少なくとも このフォーク Androidの場合)
  • 同じルックアンドフィールで利用可能なiOSバージョン
  • 月が明確に分離されているため、Androidバージョンよりもきれいに見えます

    enter image description here

Caldroidと同じように、それは 生産的なアプリ の一部です。

9
OneWorld

AFAIK、独自のカレンダーを実装する以外に方法はありません。つまり... 7列のGridLayoutを使用し、カスタムBaseAdapterを作成してデータを正しく表示する必要があります。

7
Cristian

Androidは、アプリにカレンダーを組み込む3つの方法を提供するようになりました。

  1. カレンダービュー 日付などを選択します。

  2. カレンダープロバイダー アクセスして、OSカレンダーにイベントを追加および削除できます。

  3. カレンダーインテント 追加の権限を取得したり、データベースを処理したりすることなく、カレンダーを提供できます。

6
Simon Si

それは可能ですが、簡単ではありません。 http://jimblackler.net/blog/?p=151&cpage=2#comment-52767

そして

private void InsertAppointment(String strTitle, String strDescription, String strEventLocation, long StartDateTime, long EndDateTime, boolean bAllDay, boolean bHasAlarm){
    int tAllday;
    int tHasAlarm;
    if (bAllDay = true){
        tAllday = 1;
    }
    else
        tAllday = 0;
    if (bHasAlarm = true){
        tHasAlarm = 1;
    }
    else
        tHasAlarm = 0;

    ContentValues event = new ContentValues();
    // Calendar in which you want to add Evenet
    event.put("calendar_id", CalId);                //CalId                                  
    event.put("title", strTitle);                                                           
    event.put("description", strDescription);                                  
    event.put("eventLocation", strEventLocation);                                                   
    event.put("dtstart", StartDateTime);                                                          
    event.put("dtend", EndDateTime );                  
    event.put("allDay", 0);                     
    event.put("hasAlarm", 0);                                                                  
    Uri eventsUri = Uri.parse("content://com.Android.calendar/events");    
    // event is added
    getContentResolver().insert(eventsUri, event);

}

content://com.Android.calendar/calendarsをすばやく検索すると、開始するのに役立ちます。しかし、私はまだ私の仕事を終えていません。私はまだデータを取り出すことができません。しかしそれは可能です

2
John

このライブラリは本当に素晴らしく、よりモダンなUI(マテリアルデザイン)を備えているようです:

https://github.com/prolificinteractive/material-calendarview

あなたはそれをgradleでインポートする必要があります:

compile 'com.prolificinteractive:material-calendarview:1.4.0'

そしてそれをあなたのレイアウトに追加します:

<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"
/>

enter image description here

2
Philippe

私が作成したAndroidカレンダーピッカーを使用できます。これはオープンソースプロジェクトであり、プロジェクトに簡単に追加できます。

https://github.com/sancarbar/Android-Calendar-Picker

1

MFCalendarViewを使用できます: https://github.com/MustafaFerhan/MFCalendarView

複数のイベントを設定します。

ArrayList<String> eventDays = new ArrayList<String>();
eventDays.add("2014-02-25");
eventDays.add(Util.getCurrentDate());

mf.setEvents(eventDays);

mFCalendarViewのリスナーで処理します。

mf = (MFCalendarView) findViewById(R.id.mFCalendarView);
mf.setOnCalendarViewListener(new onMFCalendarViewListener() {

    @Override
        public void onDisplayedMonthChanged(int month, int year, String monthStr) {
            }

            @Override
            public void onDateChanged(String date) {
            }
    });

とても簡単です。

1
Mustafa Ferhan