2015-07-22 3 views
5

Я использую MaterialCalendarView (https://github.com/prolificinteractive/material-calendarview) в своем приложении. Он находится внутри одного из моих фрагментов. Когда я открываю этот фрагмент, загрузка занимает около 2 секунд - я могу наблюдать за задержкой экрана. Это очень раздражает. Я искал и узнал, что это известная проблема для CalendarView, и я пытаюсь выполнить различные исправления: поместить ее в FrameLayout, установить layout_height в match_parent, установить layout_height на фиксированную высоту, даже поместить представление в новый файл макета xml, но ничего похоже, работает для этого настраиваемого виджета. У кого-нибудь еще были проблемы с этим виджетами?Медленное открытие MaterialCalendarView

Вот мой код макета:

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="net.matto.android.schoolplanner.fragment.CalendarFragment"> 

    <FrameLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="2"> 
      <com.prolificinteractive.materialcalendarview.MaterialCalendarView 
       android:id="@+id/calendar_view" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       app:mcv_selectionColor="@color/primary_dark" 
       app:mcv_firstDayOfWeek="monday"/> 
    </FrameLayout> 

    <FrameLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1"> 

     <android.support.v7.widget.RecyclerView 
      android:id="@+id/recyclerview_events" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" /> 

     <!-- empty list --> 
     <TextView 
      android:id="@+id/recyclerview_events_empty" 
      android:text="@string/no_events" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:gravity="center_horizontal" 
      android:paddingRight="@dimen/activity_horizontal_margin" 
      android:paddingEnd="@dimen/activity_horizontal_margin" 
      android:paddingLeft="@dimen/activity_horizontal_margin" 
      android:paddingStart="@dimen/activity_horizontal_margin" 
      android:paddingTop="@dimen/activity_vertical_margin" 
      android:paddingBottom="@dimen/activity_vertical_margin" /> 

     <android.support.design.widget.FloatingActionButton 
      android:id="@+id/add_button" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="bottom|end" 
      android:layout_marginBottom="@dimen/fab_margin_bottom" 
      android:layout_marginRight="@dimen/fab_margin_right" 
      android:layout_marginEnd="@dimen/fab_margin_right" 
      app:borderWidth="0dp" 
      android:src="@drawable/ic_plus" 
      app:fabSize="normal" /> 

    </FrameLayout> 

</LinearLayout> 
+1

У меня такая же проблема? Какой-либо прогресс? – Sunkas

ответ

0

Просто показать несколько месяцев. Использование setMinDate() и setMaxDate() методы.

1

Надеюсь, вы говорите о тряске текущей установленной даты. Чтобы решить эту проблему, просто добавьте следующие строки кода:

calendarView = (MaterialCalendarView) view.findViewById(R.id.calendarView); 
    calendarView.setSelectionMode(MaterialCalendarView.SELECTION_MODE_SINGLE); 
    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      calendarView.setSelectedDate(new Date()); 
     } 
    },1000); 

Ваше тряска остановится.

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