是否可以自定义 CalendarView 小部件以显示事件并自定义颜色(渐变色)?

Gro*_*mis 1 android calendarview android-studio android-studio-3.0

我目前正在开发一个应用程序,但我一直在实施应用程序的日历部分。现在我正在尝试实现类似的东西:

我没有在原始日历视图上找到任何可以让我在几天内显示事件指示器、添加渐变颜色而不是纯色等的功能。我想在我的应用程序中实现这个设计:

在此处输入图片说明

我尝试使用 SundeepK 的 Compact Calendar View 但是我没有设法实现一个事件适配器来配合这个日历,我总是在传递上下文时收到错误,因为自定义日历不使用上下文。

下面的这段代码我试图实现列表视图以填充当月的事件。所以在月加载或滚动时,事件将被加载,传递给适配器,列表视图将填充新事件。但是,无论我做什么,我总是遇到一个错误,即我无法将 android.Context 转换为自定义日历上下文。

日历活动.java

        compactCalendarView.setListener(new CompactCalendarView.CompactCalendarViewListener() {
            @Override
            public void onDayClick(Date dateClicked) {
                List<Event> bookingsFromMap = compactCalendarView.getEvents(dateClicked);
                EventListAdapter adapter = new EventListAdapter(context, bookingsFromMap);

                ListView listView = (ListView) findViewById(R.id.calendar_event_list);
                listView.setAdapter(adapter);

                Log.d(TAG, "inside onclick " + simple_date_format.format(dateClicked));
                if (bookingsFromMap != null) {
                    Log.d(TAG, bookingsFromMap.toString());
                    mutableBookings.clear();
                    for (Event booking : bookingsFromMap) {
                        mutableBookings.add((String) booking.getData());
                        Log.d(TAG, "Events in this day found!");
                        }
                } else {
                    Log.println(Log.VERBOSE,TAG, "\n NO EVENTS FOUND \n");
                }
            }
Run Code Online (Sandbox Code Playgroud)

事件列表适配器.java

public class EventListAdapter extends ArrayAdapter<Event> {

    public EventListAdapter(Context context, List<Event> feeds) {
        super(context,0,feeds);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        Event feed = getItem(position);
        if(convertView == null) {
            convertView = LayoutInflater.from(getContext()).inflate(R.layout.event_feed_item_row, parent, false);
        }

        TextView eventName = (TextView) convertView.findViewById(R.id.event_list_dataText);
        TextView eventDay = (TextView) convertView.findViewById(R.id.event_list_dayTextView);
        TextView eventMonth = (TextView) convertView.findViewById(R.id.event_list_monthTextView);

        SimpleDateFormat simple_month = new SimpleDateFormat("Mmm", Locale.US);
        SimpleDateFormat simple_day = new SimpleDateFormat("dd", Locale.US);
        eventName.setText((String) feed.getData());
        eventMonth.setText(simple_month.format(feed.getTimeInMillis()));
        eventDay.setText(simple_day.format(feed.getTimeInMillis()));

        return convertView;
    }
}

Run Code Online (Sandbox Code Playgroud)

现在从这里的截图:

日历背景只能在我想要渐变作为背景时才可以是纯色的,与所选日期相同的是纯色。 在此处输入图片说明

事件列表项如下所示(试图找到一种按月动态添加事件的方法): 在此处输入图片说明

理想的版本应该是这样的: 在此处输入图片说明

任何建议,将不胜感激。

小智 5

要以简单快捷的方式做到这一点,您只需要遵循这个 git hub 库,它是执行所需功能的多种选择。

链接(https://github.com/mahimrocky/EventCalender

底部将使用数据库在 Recyler 视图中创建