【问题标题】:How to highlight the current day on "android material-calendar"如何在“android material-calendar”上突出显示当天
【发布时间】:2016-12-10 22:00:58
【问题描述】:

我正在为 android 使用材料日历 https://github.com/prolificinteractive/material-calendarview

materialCalender = (MaterialCalendarView)v.findViewById(R.id.calendarView);
    materialCalender.state().edit()
            .setFirstDayOfWeek(Calendar.MONDAY)
            .setMinimumDate(CalendarDay.from(1900, 1, 1))
            .setMaximumDate(CalendarDay.from(2100, 12, 31))
            .setCalendarDisplayMode(CalendarMode.MONTHS)
            .commit();

但日历不会在日历视图中显示当前日期。 那么,如何显示呢?

【问题讨论】:

    标签: android calendar


    【解决方案1】:

    试试这个

        MaterialCalendarView materialCalView = findViewById(R.id.ID_from_your_xml_code);
        materialCalView.setDateSelected(CalendarDay.today(), true);
    

    【讨论】:

    • 虽然此代码可以回答问题,但提供有关其解决问题的方式和原因的信息可提高其长期价值。
    • 感谢 L_J 的回复,我编辑了文本,但老实说,我无法很好地描述它的工作原理,因为我是 android 新手
    • 日期显示在日历中。但是之前的左侧选择也停留在那里。
    【解决方案2】:

    如果你想为当前日期设置不同的颜色,你必须在你的 MaterialCalendarView 中添加一个装饰器:

    calendarView.addDecorator(new DayViewDecorator() {
        @Override
        public boolean shouldDecorate(CalendarDay day) {
            Calendar cal1 = day.getCalendar();
            Calendar cal2 = Calendar.getInstance();
    
            return (cal1.get(Calendar.ERA) == cal2.get(Calendar.ERA)
                    && cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR)
                    && cal1.get(Calendar.DAY_OF_YEAR) == 
                   cal2.get(Calendar.DAY_OF_YEAR));
        }
    
        @Override
        public void decorate(DayViewFacade view) {
            view.setBackgroundDrawable(ContextCompat.getDrawable(MainActivity.this,R.drawable.selector));
        }
    });
    

    其中 selector 是你的自定义 selector.xml,例如:

     <selector xmlns:android="http://schemas.android.com/apk/res/android"
      android:exitFadeDuration="@android:integer/config_shortAnimTime">
    
     <item
     android:state_checked="true"
     android:drawable="@color/yourColor"
     />
    
    <item
    android:state_pressed="true"
    android:drawable="@color/yourColor"
    />
    
    <item android:drawable="@android:color/transparent" />
    </selector>
    

    选择器参考链接:https://github.com/prolificinteractive/material-calendarview/blob/master/docs/CUSTOM_SELECTORS.md

    装饰器参考链接:https://github.com/prolificinteractive/material-calendarview/blob/master/docs/DECORATORS.md

    【讨论】:

      【解决方案3】:
      MaterialCalendarView materialCalendarView=(MaterialCalendarView) findViewById (R.id.calendarView);     
      Calendar calendar = Calendar.getInstance();
      materialCalendarView.setDateSelected(calendar.getTime(), true);
      

      希望对你有帮助

      【讨论】:

        【解决方案4】:

        我将 firstDayOfWeek 设置如下

        mcv = (MaterialCalendarView) findViewById(R.id.calendarView);
        mcv.state().edit()
                   .setFirstDayOfWeek(Calendar.MONDAY)
                   .commit();
        

        【讨论】:

        • 不,我说的是当天,例如,今天是星期五,它应该突出显示星期五。当我点击星期日时,星期五的颜色不应该隐藏。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-01
        • 1970-01-01
        • 2017-03-09
        • 2019-06-23
        • 2021-07-05
        相关资源
        最近更新 更多