2010-09-13 121 views
12

我對Android開發很新穎,我正在尋找在我的Android應用程序中包含日曆的方法,但是當使用Google搜索時我發現很糟糕。Android日曆視圖

  1. 有什麼辦法在我的應用程序中使用默認的日曆種類的視圖? (將是理想的,因爲用戶界面會很熟悉)

  2. 失敗的內置選項,是否有任何良好的圖書館有我可以使用的日曆控件?

我不希望同步和所有的(至少在這一點),只是希望有一個我可以顯示信息給用戶日曆視圖。

回答

7

AFAIK,沒有其他方法比實施自己的日曆。所以...你需要做的是使用帶有7列的GridLayout並創建一個自定義BaseAdapter來正確顯示數據。

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); 

} 

上 內容快速搜索://com.android.calendar/calendars 將幫助您開始。但我沒有完成我的,但我只是無法獲得數據了。但它是可能的

+0

您是否已成功將默認日曆添加到您的應用中?請告訴我。我需要一些幫助。謝謝 – 2013-01-17 18:24:39

5

Android現在提供三種方法將日曆併入您的應用程序。

  1. Calendar view用於選取日期等。

  2. Calendar provider可以訪問添加和刪除操作系統日曆中的事件。

  3. Calendar intents允許您提供日曆而不必獲得額外的權限或處理數據庫。

+0

不幸的是,這隻適用於API11或更高版本。這將是很好,如果有人創造了一個很好的backport,所以你可以支持2.x版本 – THelper 2013-01-03 14:50:19

31

我寫Caldroid庫(https://github.com/roomorama/Caldroid)即簡單的設置,並有許多功能,例如設置最小/最大日,禁用日期,選擇日期範圍,滑動即可切換月,完全本地化,支持旋轉正確等。定製外觀很簡單。只是爲了分享,如果有人可能會發現它有用:)

+0

嘿我用你的日曆,它的真棒。但我需要在日期上設置事件。就像我需要根據他們在該日期的事件來定製日期顏色。你能給我一點點想法,我該如何做到這一點? – 2013-05-17 13:00:12

+0

您可以根據日期爲每個單元提供自己的視圖,可以在文檔中找到它https://github.com/roomorama/Caldroid#allow-customized-cell-for-the-dates-gridview 您可以在樣品中找到如何使用它 – thomasdao 2013-05-20 03:36:54

+0

我被困在這個問題中,你能檢查一下嗎? https://github.com/roomorama/Caldroid/issues/24 – 2013-06-05 11:46:12

9

我試過android-CalendarView,Caldroid後來改用android-times-square具有這種改進:

  • 快得多切換到其他月份由於垂直滾動(無分頁這Caldroid響應慢)
  • 指標,突出顯示日期(至少在Android的this fork
  • 的iOS版本相同的外觀和感覺
  • 看起來比Android版本吸塵器,因爲月是明顯分開

    enter image description here

就像Caldroid它是a productive app的一部分。

+0

「指標,突出顯示的日期(至少在Android的這個叉)」 - 這也可以在Caldroid?我有兩個想法:是選擇caldroid還是這個,我需要日光浴。...謝謝。 – Filip 2016-02-08 10:31:28

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) { 
      } 
    }); 

這很簡單。

2

這個庫似乎真的很好,有一個更現代的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

+0

嗨菲利普我使用上面的壓光view.every工作正常我需要設置日曆1990年如何做到這一點?你能幫我 – 2017-01-06 06:48:05