2017-01-23 74 views
2

我想在CardView 上显示特定的月份,而不需要下一个和上一个箭头来浏览日历。如果我想要显示2010年2月用户必须只能看到2010年2月。他们不能去下一个月或上个月。如何仅在Android CalendarView上显示特定月份?

我跟着this堆栈溢出答案显示一个特定的月份,但它不适合我。它显示所有的时间,我的情况下的当前日期和月份。我不确定是否可以或不禁用NEXT-PREVIOUS导航。

我的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> 

我的片段类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
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()); 

其中calendarCalendarView

CalendarView, locked to February 2017, on Nexus 5 running Android 6

+0

非常感谢。工作正常。另一个问题, 此处始终标记该月的第一个日期。我可以禁用它吗?如果我显示当前月份,日期选择器将选择当前日期。如果我显示另一个月份(不是当前月份),则选择器不应默认选择第一个日期。可能吗? –

+1

@HasanAbdullah:“这里总是标记当月的第一个日期” - 不,它标记你通过'setDate()'请求的日期。 “我可以禁用它吗?” - 不是我所知道的,因为'CalendarView'的意思是让用户选择一个日期。也许正确的答案是你不要使用'CalendarView',而是使用[一些更符合你想要的功能集的库](https://android-arsenal.com/tag/27)。 – 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是Android日历视图

+0

它显示了具有NEXT和PREVIOUS按钮的特定月份。 –

+0

@HasanAbdullah您可以使用Android自定义日历视图获取更多样式,您可以使用下一个和上一个按钮 – Shaahul

相关问题