2017-01-23 14 views
2

Я хочу показать конкретный месяц на CardView без СЛЕДУЮЩАЯ и ПРЕДЫДУЩАЯ стрелка для навигации по календарю. Если я хочу показать февраль 2010 года, пользователь должен увидеть только февраль 2010 года. Они не могут идти в следующем или предыдущем месяце.Как показать только определенный месяц в 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()); 

где calendar является CalendarView.

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

+0

Спасибо большое. Работает отлично. Другой вопрос: здесь всегда отмечают 1-ю дату этого месяца. Могу ли я отключить его? Если я покажу текущий месяц, селектор даты выберет текущую дату. Если я покажу еще месяц (не текущий месяц), то селектор не должен выбирать первую дату по умолчанию. Является ли это возможным? –

+1

@HasanAbdullah: «здесь всегда отмечают 1-ю дату этого месяца» - нет, он отмечает дату, которую вы запрашиваете с помощью '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 это андроида режим просмотра календаря

+0

Показывает определенный месяц с помощью кнопки NEXT и PREVIOUS. –

+0

@ HasanAbdullah вы можете использовать пользовательский календарь для Android для большего стиля, вы можете играть со следующими и предыдущими кнопками на нем – Shaahul

 Смежные вопросы

  • Нет связанных вопросов^_^