如何在自定义应用程序中使用来自Android股票日历的视图(月,日,星期)

在Google Stock Android日历中存在多个视图(月,周,议程,周),从Google Android Sources Repositories下载的源代码具有相同的应用程序,通过浏览代码,名为com.android.calendar的包具有主视图负责渲染这些活动:

在这里输入图像说明

与周围的代码辛苦我使用了两个包com.android.calendar.monthcom.android.calendar但无法实现我的目标,这是我使用的示例:

在这里输入图像说明

和下面的代码为主:

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } 

这里是我的XML代码:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/month" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true" android:paddingTop="1dip" android:background="@null"> <TextView android:id="@+id/month_name" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingTop="10dip" android:visibility="gone" style="@style/MonthView_MiniMonthLabel" /> <include android:id="@+id/day_names" layout="@layout/full_month_header" /> <View android:background="@color/calendar_grid_line_inner_vertical_color" android:layout_height="1px" android:layout_width="match_parent" /> <com.android.calendar.month.MonthListView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="match_parent" android:drawSelectorOnTop="false" /> </LinearLayout> 

直到这里代码工作正常,但与一个空白的白色屏幕和一个操作栏,如果我的问题不清楚,请尝试编辑它。

 What should be done to include Calendar Views (Month, Week, Day) in a custom application ? 

Solutions Collecting From Web of "如何在自定义应用程序中使用来自Android股票日历的视图(月,日,星期)"

您应该看看CalendarView,它是在Android中集成日历的标准方式。

此外,如果您需要在用户界面中selectdate和时间,则有DatePicker和TimePicker 。

请记住,Android中的默认日历应用程序是开源的 ! 随意挖掘这里的代码 。

由于您还没有为Lis​​tView设置适配器,屏幕是空白的。 您可以在MonthByWeekFragment中的原始日历应用程序中看到如何configuration适配器。

  @Override protected void setUpAdapter() { mFirstDayOfWeek = Utils.getFirstDayOfWeek(mContext); mShowWeekNumber = Utils.getShowWeekNumber(mContext); HashMap<String, Integer> weekParams = new HashMap<String, Integer>(); weekParams.put(SimpleWeeksAdapter.WEEK_PARAMS_NUM_WEEKS, mNumWeeks); weekParams.put(SimpleWeeksAdapter.WEEK_PARAMS_SHOW_WEEK, mShowWeekNumber ? 1 : 0); weekParams.put(SimpleWeeksAdapter.WEEK_PARAMS_WEEK_START, mFirstDayOfWeek); weekParams.put(MonthByWeekAdapter.WEEK_PARAMS_IS_MINI, mIsMiniMonth ? 1 : 0); weekParams.put(SimpleWeeksAdapter.WEEK_PARAMS_JULIAN_DAY, Time.getJulianDay(mSelectedDay.toMillis(true), mSelectedDay.gmtoff)); weekParams.put(SimpleWeeksAdapter.WEEK_PARAMS_DAYS_PER_WEEK, mDaysPerWeek); if (mAdapter == null) { mAdapter = new MonthByWeekAdapter(getActivity(), weekParams, mEventDialogHandler); mAdapter.registerDataSetObserver(mObserver); } else { mAdapter.updateParams(weekParams); } mAdapter.notifyDataSetChanged(); } 

以及如何将适配器添加到SimpleDayPickerFragment中的ListView中:

 @Override public void onAttach(Activity activity) { ... setUpAdapter(); setListAdapter(mAdapter); }