我在我的应用中使用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>
答案 0 :(得分: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);
你的颤抖会停止。
答案 1 :(得分:0)
只是展示几个月。 使用 setMinDate()和 setMaxDate()方法。