gpt4 book ai didi

android - 在 MaterialCalendarView 中使用多个 DotSpan

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:37:03 24 4
gpt4 key购买 nike

是否有任何方法可以将超过 1 个 DotSpan 附加到 Android MaterialCalendarView 的日期?尽管我在我的 CalendarView 中添加了 2 个 DotSpan,但它仍然只显示 1 个 DotSpan ...我正在使用以下代码:

@Override
public boolean shouldDecorate(CalendarDay day) {
day.copyTo(calendar);
for (int i = 0; i < weekDayStrTmp.size(); i++) {
if (weekDayStrTmp.contains(day)) {
return true;
} else {
return false;
}
}
return false;
}

@Override
public void decorate(DayViewFacade view) {
view.addSpan(new DotSpan(8, myContext.getResources().getColor(R.color.myColor3)));
view.addSpan(new DotSpan(8, myContext.getResources().getColor(R.color.myColor3)));
}

最佳答案

您正在用第二个覆盖第一个 DotSpan。给定的 DotSpan 类允许您在文本下方创建一个居中的彩色点,因此如果您将一个点放在另一个之上,第一个将不可见。

我已经设法在同一个 DayViewFacade View 中创建了几个 DotSpans,我不确定这是否是您搜索的确切解决方案,但我相信它会有所帮助:

因此,您必须创建一个实现 DayViewDecorator 的自定义 Decorator 类,我们称它为 OrangeDecorator。

您必须创建另一个实现 LineBackgroundSpan 的自定义类,我们将其称为 MyCustomOrangeSpan。

这两个类与原始库中的原始 DotSpan 和 EventDecorator 几乎相同,但您可以根据需要自定义这些类。

在“装饰”函数(OrangeDecorator 类)中使用您的自定义 LineBackgroundSpan,如下所示:

@Override
public void decorate(DayViewFacade view) {
view.addSpan(new MyCustomOrangeSpan(6, ContextCompat.getColor(mContext, R.color.AppOrange)));
}

在“drawBackground”函数(MyCustomOrangeSpan 类)中,您将能够将圆定位在 Canvas 内,让我们开始吧:

@Override
public void drawBackground(Canvas canvas, Paint paint, int left, int right, int top, int baseline,
int bottom, CharSequence text, int start, int end, int lnum) {

int oldColor = paint.getColor();
if (color != 0) {
paint.setColor(color);
}

canvas.drawCircle((left + right) / 2 - 20, bottom + radius, radius, paint);
paint.setColor(oldColor);

}

这样,我们可以创建多个 DayViewDecorators 和 LineBackgroundSpan(用于不同的定位):

BlueDecorator blueDecorator = new BlueDecorator(getActivity(),eventsDays,eventsMap);
OrangeDecorator orangeDecorator = new OrangeDecorator(getActivity(),eventsDays,eventsMap);
GreenDecorator greenDecorator = new GreenDecorator(getActivity(),eventsDays,eventsMap);
materialCalendarView.addDecorator(blueDecorator);
materialCalendarView.addDecorator(orangeDecorator);
materialCalendarView.addDecorator(greenDecorator);

关于android - 在 MaterialCalendarView 中使用多个 DotSpan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33355784/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com