Медленное открытие MaterialCalendarView

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

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

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

person MaTTo    schedule 22.07.2015    source источник
comment
У меня такая же проблема? Какой-либо прогресс?   -  person Sunkas    schedule 30.07.2015


Ответы (2)


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

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

Твоя дрожь прекратится.

person Partha Chakraborty    schedule 22.11.2017

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

person Antonio Cord    schedule 11.11.2016