android - 如何在日历日 View 中添加圆形装饰器?

标签 android calendar

我正在使用 npanigrahy:Custom-Calendar-View 来显示我的自定义日历,但我的问题是如何在日历中创建的事件上添加圆形项目符号?

最佳答案

这是使用this的最佳方式图书馆。我是这样实现的:

calendarView.addDecorators(new CurrentDayDecorator(this));

这里是 CurrentDayDecatator 类:

package com.calendar.util;

import android.app.Activity;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.support.v4.content.ContextCompat;

import com.calendar.MainActivity;
import com.calendar.R;
import com.prolificinteractive.materialcalendarview.CalendarDay;
import com.prolificinteractive.materialcalendarview.DayViewDecorator;
import com.prolificinteractive.materialcalendarview.DayViewFacade;

import java.util.Calendar;
import java.util.Collection;
import java.util.Date;

/**
 * Created by Navruz on 17.06.2016.
*/
public class CurrentDayDecorator implements DayViewDecorator {

private Drawable drawable;

CalendarDay currentDay = CalendarDay.from(new Date());

public CurrentDayDecorator(Activity context) {
    drawable = ContextCompat.getDrawable(context,     R.drawable.first_day_month);

}

@Override
public boolean shouldDecorate(CalendarDay day) {
    return day.equals(currentDay);
}

@Override
public void decorate(DayViewFacade view) {
    view.setSelectionDrawable(drawable);
}
}

这里是一个名为 first_day_month 的可绘制圆圈

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
      android:exitFadeDuration="@android:integer/config_shortAnimTime">

<item android:state_checked="true"
      android:drawable="@drawable/selected_bg_color" />

<item android:state_pressed="true"
      android:drawable="@drawable/selected_bg_color" />

<item android:drawable="@drawable/red_circle" />

红色圆圈:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
   android:innerRadius="0dp"
   android:shape="ring"
   android:thicknessRatio="2"
   android:useLevel="false" >
<solid android:color="@android:color/transparent" />

<stroke
    android:width="2dp"
    android:color="@color/selected_color" />

selected_bg_color:

<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">

<solid
    android:color="@color/selected_color"/>

<size
    android:width="120dp"
    android:height="120dp"/>

关于android - 如何在日历日 View 中添加圆形装饰器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37854906/

相关文章:

ruby-on-rails - Google Calendar API V3 - 插入日历

android - 如何使用 com.prolificinteractive :material-calendarview's CalendarView? 创建某个工具栏

android - 如何通过代码绑定(bind)到 MvxRecyclerView ItemsSource?

android - IBM Worklight 6.1 - 如何检查连接类型?

java - Android - 无法将 Spinner 值传递给 jsonSendRequest

r - 在 R 中更改日历热图上的天数顺序

Android 主题更改复选框项目文本颜色

android - 布局中资源的使用

java - Android 日历获取上一年的上个月

java - 计算两个 Date 或 Calendar 对象之间的年数,考虑闰年