Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 是否可以自定义CalendarView小部件以显示事件和自定义颜色(渐变色)?_Android_Android Studio_Android Studio 3.0_Calendarview - Fatal编程技术网

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

Android 是否可以自定义CalendarView小部件以显示事件和自定义颜色(渐变色)?,android,android-studio,android-studio-3.0,calendarview,Android,Android Studio,Android Studio 3.0,Calendarview,我目前正在开发一个应用程序,我被困在实现应用程序的日历部分。现在我正试图实现类似的目标: 我没有在原始日历视图中找到任何功能,这些功能可以让我在天下显示事件指示器,添加渐变颜色而不是纯色等。 我想在我的应用程序中实现此设计: 我尝试使用SundeepK提供的Compact Calendar View,但是我没有实现一个与此日历配套的事件适配器,我在传递上下文时总是收到一个错误,因为自定义日历不使用上下文 下面的代码是我试图实现的列表视图,其中包含当月的事件。因此,在month load或scro

我目前正在开发一个应用程序,我被困在实现应用程序的日历部分。现在我正试图实现类似的目标:

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

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

下面的代码是我试图实现的列表视图,其中包含当月的事件。因此,在month load或scroll上,事件将被加载并传递到适配器,列表视图将填充新事件。然而,无论我做了什么,我总是会遇到一个错误,我无法将android.Context转换为自定义日历上下文

CalendarActivity.java

compactCalendarView.SetListener新建compactCalendarView.CompactCalendarViewListener{ @凌驾 公共无效日期单击日期单击日期{ List bookingsFromMap=compactCalendarView.getEventsdateClicked; EventListAdapter=新建EventListAdaptercontext,bookingsFromMap; ListView ListView=ListView findViewByIdR.id.calendar\u event\u list; listView.setAdapteradapter; Log.dTAG,内部onclick+simple\u date\u format.formatdateClicked; 如果bookingsFromMap!=空{ Log.dTAG,bookingsFromMap.toString; 易变预订。清除; 对于活动预订:bookingsFromMap{ mutableBookings.addString booking.getData; Log.dTAG,找到当天的事件!; } }否则{ Log.printlnLog.VERBOSE,标记,\n未找到任何事件\n; } } EventListAdapter.java

公共类EventListAdapter扩展了ArrayAdapter{ 公共事件列表适配器上下文,列表源{ 超级上下文,0,提要; } @凌驾 公共视图getViewint位置、视图转换视图、视图组父级{ 事件提要=getItemposition; ifconvertView==null{ convertView=LayoutInflater.fromgetContext.inflateR.layout.event\u feed\u item\u行,父级,false; } TextView eventName=TextView convertView.findviewbydr.id.event\u list\u dataText; TextView eventDay=TextView convertView.findViewByIdR.id.event\u list\u dayTextView; TextView eventMonth=TextView convertView.findViewByIdR.id.event\u list\u monthTextView; SimpleDataFormat simple_month=新SimpleDataFormatMM,Locale.US; SimpleDataFormat simple_day=新的SimpleDataFormatDD,Locale.US; eventName.setTextString提要.getData; eventMonth.setTextsimple\u month.formatfeed.getTimeInMillis; eventDay.setTextsimple\u day.formatfeed.getTimeInMillis; 返回视图; } } 现在从这里的屏幕截图:

日历背景只能是固体当我想有一个梯度作为背景,作为选定的日期一样是一个纯色。

事件列表项如下图所示试图找到按月动态添加事件的方法:

理想的版本应该如下所示:


如果您有任何建议,我们将不胜感激。

要以简单快捷的方式完成此任务,您只需遵循此git hub库即可完成所需功能

链接
底部也将在Recyler视图中创建,方法是使用数据库以简单快捷的方式创建,您只需遵循这个git hub库即可完成所需的功能

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

我发现了一个项目,它通过修改一点来根据您的要求创建日历

使用以下命令:

您首先需要为日历创建渐变背景,只需将res/fraglay.xml gradient drawable resource设置为根布局背景

您的第二个需要是通过修改drawable/selectedback.xml文件使所选日期渐变为背景

您的第三个需求是底部回收器如果您想根据您的需求修改事件名称布局编辑布局/查看项目,请查看上面项目中已经提供的内容


在上面的项目中,您可以通过GoogleCalendarView的init方法设置事件。如果一个日期多个事件可用,您可以设置任何您想要的事件。在这种情况下,它也可以正常工作。

我发现了一个项目,它可以根据您的要求通过修改一点来创建日历

使用以下命令:

您首先需要为日历创建渐变背景,只需将res/fraglay.xml gradient drawable resource设置为root l 布局背景

您的第二个需要是通过修改drawable/selectedback.xml文件使所选日期渐变为背景

您的第三个需求是底部回收器如果您想根据您的需求修改事件名称布局编辑布局/查看项目,请查看上面项目中已经提供的内容


在上面的项目中,您可以通过GoogleCalendarView的init方法设置事件。如果一个日期多个事件可用,您可以设置任何您想要的事件。在这种情况下,它也可以正常工作。在使用CompactCalendarView时,您可以将事件添加到日历中,单击可以获得所选日期的事件,您可以使用此代码来实现

Long miliseconds = GettingMiliSeconds(formatteddate);


  Event newevent = AddEvents(miliseconds, "" + "Text You wants to add in your event ");

                        calendarView.addEvent(newevent);



 public Event AddEvents(Long milliseconds,String Description)
    {
        Event  event  = new Event(Color.BLUE,milliseconds,""+Description);

        return  event;
    }

    public Long GettingMiliSeconds(String Date)
    {
        long timeInMilliseconds = 0;

        SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
        try {

            Date mDate = sdf.parse(Date);
            timeInMilliseconds = mDate.getTime();

        } catch (ParseException  e) {
            e.printStackTrace();
        }

        return  timeInMilliseconds;
    }

使用CompactCalendarView时,您可以将事件添加到日历中,单击可以获得所选日期的事件,您可以使用此代码来实现

Long miliseconds = GettingMiliSeconds(formatteddate);


  Event newevent = AddEvents(miliseconds, "" + "Text You wants to add in your event ");

                        calendarView.addEvent(newevent);



 public Event AddEvents(Long milliseconds,String Description)
    {
        Event  event  = new Event(Color.BLUE,milliseconds,""+Description);

        return  event;
    }

    public Long GettingMiliSeconds(String Date)
    {
        long timeInMilliseconds = 0;

        SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
        try {

            Date mDate = sdf.parse(Date);
            timeInMilliseconds = mDate.getTime();

        } catch (ParseException  e) {
            e.printStackTrace();
        }

        return  timeInMilliseconds;
    }