Android 日历打卡标记:使用星型图标标记成功日期
在日历上以星型标记打卡成功的日期,你可以自定义一个星型的标记图标,并将其设置为日历上选中日期的自定义标记。以下是修改后的代码:
- 首先,在
res目录下创建一个名为drawable的文件夹,并在该文件夹中添加一个名为ic_star.xml的矢量图标文件。ic_star.xml的内容如下:
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FFD700"
android:pathData="M12,17.27L18.18,21l-1.64-7.03L22,9.24l-7.19-0.61L12,2 9.19,8.63 2,9.24l5.46,4.73L5.82,21z" />
</vector>
- 在
MainActivity的onCreate()方法中,添加以下代码来设置自定义标记图标:
// 获取自定义标记图标
Drawable customMarker = getResources().getDrawable(R.drawable.ic_star);
calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
@Override
public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) {
String selectedDate = formatDate(year, month, dayOfMonth);
Toast.makeText(MainActivity.this, '选择的日期:' + selectedDate, Toast.LENGTH_SHORT).show();
}
});
checkInButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String currentDate = getCurrentDate();
// 在日历上显示标记
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date = sdf.parse(currentDate);
long timeInMillis = date.getTime();
calendarView.setDate(timeInMillis);
calendarView.setActivated(true);
calendarView.setCustomDayView(new CalendarView.DayViewAdapter() {
@Override
public void makeCellView(@NonNull CalendarCellView parent) {
ImageView marker = new ImageView(MainActivity.this);
marker.setImageDrawable(customMarker);
parent.addView(marker);
}
});
} catch (ParseException e) {
e.printStackTrace();
}
}
});
现在,当你点击打卡按钮后,选中的日期将会在日历上以星型标记显示。请确保将ic_star.xml文件放在正确的位置,并替换代码中的R.drawable.ic_star为你自定义图标的资源ID。
原文地址: http://www.cveoy.top/t/topic/bv2m 著作权归作者所有。请勿转载和采集!