如何在Android CalendarView中仅显示特定月份?

3
我想在CardView上展示一个特定的月份,而不需要使用“下一个”和“上一个”箭头来导航日历。如果我想要展示2010年2月,用户只能看到2010年2月,他们无法查看前一个或后一个月份。
我按照这个Stack Overflow答案来展示特定的月份,但对我并没有起作用。它每次都显示当前日期和月份,对于我的情况,我不确定是否可能禁用“下一个”和“上一个”导航。
我的XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="megaminds.dailyeditorialword.Fragments.CalendarViewFragment">

<CalendarView
    android:id="@+id/calendarViewT"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:firstDayOfWeek="7">

</CalendarView>

我的fragment类的onCreateView方法:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_calendar_view, container, false);

    int year = 2010, month = 2, day = 1;

    CalendarView calendarView = (CalendarView) view.findViewById(R.id.calendarViewT);
    Calendar calendar = Calendar.getInstance();
    calendar.set(year, month, day); //want to show full month of February 2010

    calendarView.setMinDate(calendar.getTimeInMillis());

    return view;
}

如何只显示二月份而不带有前后导航?

2个回答

3
Calendar febFirst=Calendar.getInstance();

febFirst.set(2017, 1, 1, 0, 0, 0);

calendar.setMinDate(febFirst.getTimeInMillis());

Calendar febLast=Calendar.getInstance();

febLast.set(2017, 2, 0, 0, 0, 0);

calendar.setMaxDate(febLast.getTimeInMillis());
calendar.setDate(febFirst.getTimeInMillis());

这里的calendar是指CalendarView

在运行Android 6的Nexus 5上锁定到2017年2月的CalendarView


非常感谢。运行良好。另一个问题,这里总是标记该月的第一个日期。我能否禁用它?如果我显示当前月份,则日期选择器将选择当前日期。如果我显示另一个月份(而不是当前月份),则选择器不应默认选择第一个日期。这可能吗? - Hasan Abdullah
1
@HasanAbdullah:“这里总是标记该月的第一个日期”--不,它标记您通过setDate()请求的日期。“我能禁用它吗?”--据我所知,不能,因为CalendarView的目的是让用户选择日期。也许正确的答案是您不应该使用CalendarView,而是使用一些更符合您所需功能集的库 - CommonsWare

1
int day = 16;
int month =8;
int year =2017;
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, month); calendar.set(Calendar.DAY_OF_MONTH, day);
     long milliTime = calendar.getTimeInMillis();
mCalendarView.setDate (milliTime, true, true); 

这里的 mCalendarView 是安卓日历视图


它显示了具体的月份,并带有下一个和上一个按钮。 - Hasan Abdullah
@HasanAbdullah 你可以使用Android自定义日历视图来实现更多的样式化效果,你可以对其上的下一个和上一个按钮进行操作。 - Shaahul

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接