2015-07-22 3 views
5

Sto utilizzando MaterialCalendarView (https://github.com/prolificinteractive/material-calendarview) nella mia app. È dentro uno dei miei frammenti. Quando apro questo frammento, ci vogliono circa 2 secondi per caricare - posso vedere il ritardo dello schermo. È davvero fastidioso Ho cercato in giro e ho scoperto che questo è un problema noto per CalendarView e ho provato varie correzioni: per inserirlo all'interno di FrameLayout, impostare layout_height per match_parent, impostare layout_height ad altezza fissa, anche mettere la vista all'interno del nuovo file di layout xml ma nulla sembra funzionare per questo widget personalizzato. Qualcun altro ha avuto problemi con questo widget?Apertura lenta di MaterialCalendarView

Ecco il mio codice di layout:

<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

Ho lo stesso problema? Qualche progresso? – Sunkas

risposta

0

mostrare solo un paio di mesi. Usa setMinDate() e setMaxDate() metodi.

1

Spero che tu stia parlando dello scuotimento della data corrente che viene impostata. Per risolvere questo problema, aggiungi le seguenti righe di codice:

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); 

L'agitazione si interromperà.