12

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

  1. アプリケーションで既定のカレンダーの種類のビューを使用する方法はありますか? (UIがなじみやすいので理想的です)

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

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

4

8 に答える 8

32

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

于 2013-03-08T14:41:58.337 に答える
9

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

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

    ここに画像の説明を入力

Caldroid と同様に、生産的なアプリの一部です。

于 2014-01-23T15:30:33.380 に答える
7

私の知る限り、独自のカレンダーを実装する以外に方法はありません。だから...あなたがしなければならないことはGridLayout、7列でを使用し、カスタムBaseAdapterを作成してデータを正しく表示することです。

于 2010-09-13T18:12:51.763 に答える
6

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

  1. 日付などを選択するためのカレンダー ビュー。

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

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

于 2012-06-22T13:54:57.413 に答える
2

可能ですが、簡単ではありません。 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 と、開始するのに役立ちます。しかし、私はまだデータを取得できません。しかし、それは可能です

于 2011-11-29T23:16:42.437 に答える
2

このライブラリは本当に素晴らしく、よりモダンな UI (Material Design) を備えています。

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

ここに画像の説明を入力

于 2015-05-17T01:28:55.907 に答える
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) {
            }
    });

とても簡単です。

于 2014-02-20T09:06:06.637 に答える
1

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

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

于 2013-03-31T09:29:08.353 に答える