Android Can';单击日期时,用背景色填充圆圈
我正在开发一个自定义日历。当用户启动它时,它应该显示当前日期,并在其周围画一个圆圈(无背景色)。当用户单击日期时,圆圈应填充背景色(表示选择了日期) 它不起作用了。谁能说出我的代码有什么问题吗Android Can';单击日期时,用背景色填充圆圈,android,calendar,background-color,Android,Calendar,Background Color,我正在开发一个自定义日历。当用户启动它时,它应该显示当前日期,并在其周围画一个圆圈(无背景色)。当用户单击日期时,圆圈应填充背景色(表示选择了日期) 它不起作用了。谁能说出我的代码有什么问题吗 (供参考) 公共类CaldroidSampleActivity扩展了AppCompative活动{ 私有布尔撤消=false; 私人CaldroidFragment CaldroidFragment; 日期选择半月,选择事件; 公共阵列列表项; ArrayList半月日,满月日; 日历月; 公共经办人;
(供参考)
公共类CaldroidSampleActivity扩展了AppCompative活动{
私有布尔撤消=false;
私人CaldroidFragment CaldroidFragment;
日期选择半月,选择事件;
公共阵列列表项;
ArrayList半月日,满月日;
日历月;
公共经办人;
int prevView;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
最终SimpleDataFormat格式化程序=新SimpleDataFormat(“dd MMM yyyy”);
caldroidFragment=新的CaldroidSampleCustomFragment();
CalendarDetail fragobj=新CalendarDetail();
//如果活动是在旋转后创建的
如果(savedInstanceState!=null){
caldroidFragment.restoreStatesFromKey(savedInstanceState,“CALDROID保存状态”);
}
//如果活动是从新创建的
否则{
Bundle args=新Bundle();
Calendar cal=Calendar.getInstance();
args.putInt(CaldroidFragment.MONTH,cal.get(Calendar.MONTH)+1);
args.putInt(CaldroidFragment.YEAR,cal.get(Calendar.YEAR));
args.putBoolean(CaldroidFragment.ENABLE_SWIPE,true);
args.putBoolean(日历中的CaldroidFragment.SIX_WEEKS_,false);
cal=Calendar.getInstance();
计算添加(日历日期,1);
Date selectFullMoon=cal.getTime();
caldroidFragment.setSelectedFullMoonDates(选择FullMoon);
cal=Calendar.getInstance();
cal.add(Calendar.DATE,-4);
选择halfmoon=cal.getTime();
caldroidFragment.设置选定的半月日期(选择半月);
cal.add(Calendar.DATE,-2);
选择halfmoon=cal.getTime();
caldroidFragment.设置选定的半月日期(选择半月);
cal=Calendar.getInstance();
cal.add(日历日期,3);
selectEvent=cal.getTime();
caldroidFragment.setSelectedEvents(selectEvent);
cal.add(日历日期,2);
selectEvent=cal.getTime();
caldroidFragment.setSelectedEvents(selectEvent);
cal.add(日历日期,2);
选择halfmoon=cal.getTime();
caldroidFragment.setSelectedEvents(选择半月形);
cal.add(Calendar.DATE,-4);
selectEvent=cal.getTime();
caldroidFragment.setSelectedEvents(selectEvent);
cal.add(Calendar.DATE,-2);
selectEvent=cal.getTime();
caldroidFragment.setSelectedEvents(selectEvent);
caldroidFragment.refreshView();
caldroidFragment.setArguments(args);
}
FragmentTransaction t=getSupportFragmentManager().beginTransaction();
t、 更换(R.id.calendar1,caldroidFragment);
t、 提交();
//设置侦听器
最终CaldroidListener侦听器=新的CaldroidListener(){
@凌驾
在选择日期(日期、视图)上的公共无效{
Toast.makeText(getApplicationContext(),formatter.format(日期),
吐司。长度(短)。show();
String selectedgridate=formatter.format(日期);
Log.e(“网格值…”、“网格值…”+selectedGridDate);
String[]separatedTime=selectedgridate.split(\\s+);
CalendarDetail fragobj=新CalendarDetail();
Bundle=新Bundle();
bundle.putString(“edttext”,separatedTime[0]);
FragmentManager FragmentManager=getFragmentManager();
fragobj.setArguments(bundle);
android.app.FragmentTransaction FragmentTransaction=fragmentManager.beginTransaction();
//CalendarDetail hello=新建CalendarDetail();
fragmentTransaction.replace(R.id.container,FragmentGobj);
fragmentTransaction.commit();
}
@凌驾
变更月公共作废(整数月、整数年){
}
@凌驾
仅限长点击日期的公共作废(日期,查看){
}
@凌驾
公共void onCaldroidViewCreated(){
}
};
//设置Caldroid
caldroidFragment.setCaldroidListener(侦听器);
/*//自定义日历
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
如果(撤消){
customizeButton.setText(getString(R.string.customize));
textView.setText(“”);
//重置日历
caldroidFragment.clearDisableDates();
caldroidFragment.clearSelectedDates();
caldroidFragment.clearFullMoonDates();
caldroidFragment.clearHalfMoonDates();
caldroidFragment.clearEventDates();
caldroidFragment.setMinDate(null);
caldroidFragment.setMaxDate(null);
public class CaldroidSampleActivity extends AppCompatActivity {
private boolean undo = false;
private CaldroidFragment caldroidFragment;
Date selectHalfMoon, selectEvent;
public ArrayList<String> items;
ArrayList<String> halfmoon_day, fullmoon_day;
Calendar itemmonth;
public Handler handler;
int prevView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final SimpleDateFormat formatter = new SimpleDateFormat("dd MMM yyyy");
caldroidFragment = new CaldroidSampleCustomFragment();
CalendarDetail fragobj = new CalendarDetail();
// If Activity is created after rotation
if (savedInstanceState != null) {
caldroidFragment.restoreStatesFromKey(savedInstanceState, "CALDROID_SAVED_STATE");
}
// If activity is created from fresh
else {
Bundle args = new Bundle();
Calendar cal = Calendar.getInstance();
args.putInt(CaldroidFragment.MONTH, cal.get(Calendar.MONTH) + 1);
args.putInt(CaldroidFragment.YEAR, cal.get(Calendar.YEAR));
args.putBoolean(CaldroidFragment.ENABLE_SWIPE, true);
args.putBoolean(CaldroidFragment.SIX_WEEKS_IN_CALENDAR, false);
cal = Calendar.getInstance();
cal.add(Calendar.DATE, 1);
Date selectFullMoon = cal.getTime();
caldroidFragment.setSelectedFullMoonDates(selectFullMoon);
cal = Calendar.getInstance();
cal.add(Calendar.DATE, -4);
selectHalfMoon = cal.getTime();
caldroidFragment.setSelectedHalfMoonDates(selectHalfMoon);
cal.add(Calendar.DATE, -2);
selectHalfMoon = cal.getTime();
caldroidFragment.setSelectedHalfMoonDates(selectHalfMoon);
cal = Calendar.getInstance();
cal.add(Calendar.DATE, 3);
selectEvent = cal.getTime();
caldroidFragment.setSelectedEvents(selectEvent);
cal.add(Calendar.DATE, 2);
selectEvent = cal.getTime();
caldroidFragment.setSelectedEvents(selectEvent);
cal.add(Calendar.DATE, 2);
selectHalfMoon = cal.getTime();
caldroidFragment.setSelectedEvents(selectHalfMoon);
cal.add(Calendar.DATE, -4);
selectEvent = cal.getTime();
caldroidFragment.setSelectedEvents(selectEvent);
cal.add(Calendar.DATE, -2);
selectEvent = cal.getTime();
caldroidFragment.setSelectedEvents(selectEvent);
caldroidFragment.refreshView();
caldroidFragment.setArguments(args);
}
FragmentTransaction t = getSupportFragmentManager().beginTransaction();
t.replace(R.id.calendar1, caldroidFragment);
t.commit();
// Setup listener
final CaldroidListener listener = new CaldroidListener() {
@Override
public void onSelectDate(Date date, View view) {
Toast.makeText(getApplicationContext(), formatter.format(date),
Toast.LENGTH_SHORT).show();
String selectedGridDate = formatter.format(date);
Log.e("grid val..", "grid val.." + selectedGridDate);
String[] separatedTime = selectedGridDate.split("\\s+");
CalendarDetail fragobj = new CalendarDetail();
Bundle bundle = new Bundle();
bundle.putString("edttext", separatedTime[0]);
FragmentManager fragmentManager = getFragmentManager();
fragobj.setArguments(bundle);
android.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
// CalendarDetail hello = new CalendarDetail();
fragmentTransaction.replace(R.id.container, fragobj);
fragmentTransaction.commit();
}
@Override
public void onChangeMonth(int month, int year) {
}
@Override
public void onLongClickDate(Date date, View view) {
}
@Override
public void onCaldroidViewCreated() {
}
};
// Setup Caldroid
caldroidFragment.setCaldroidListener(listener);
/* // Customize the calendar
customizeButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (undo) {
customizeButton.setText(getString(R.string.customize));
textView.setText("");
// Reset calendar
caldroidFragment.clearDisableDates();
caldroidFragment.clearSelectedDates();
caldroidFragment.clearFullMoonDates();
caldroidFragment.clearHalfMoonDates();
caldroidFragment.clearEventDates();
caldroidFragment.setMinDate(null);
caldroidFragment.setMaxDate(null);
caldroidFragment.setShowNavigationArrows(true);
caldroidFragment.setEnableSwipe(true);
caldroidFragment.refreshView();
undo = false;
return;
}
// Else
undo = true;
customizeButton.setText(getString(R.string.undo));
Calendar cal = Calendar.getInstance();
// Min date is last 7 days
cal.add(Calendar.DATE, -7);
Date minDate = cal.getTime();
// Max date is next 7 days
cal = Calendar.getInstance();
cal.add(Calendar.DATE, 14);
Date maxDate = cal.getTime();
// Set selected dates
// From Date
cal = Calendar.getInstance();
cal.add(Calendar.DATE, 2);
Date fromDate = cal.getTime();
// To Date
cal = Calendar.getInstance();
cal.add(Calendar.DATE, 3);
Date toDate = cal.getTime();
// Set disabled dates
ArrayList<Date> disabledDates = new ArrayList<Date>();
for (int i = 5; i < 8; i++) {
cal = Calendar.getInstance();
cal.add(Calendar.DATE, i);
disabledDates.add(cal.getTime());
}
// Customize
caldroidFragment.setMinDate(minDate);
caldroidFragment.setMaxDate(maxDate);
caldroidFragment.setDisableDates(disabledDates);
caldroidFragment.setSelectedDates(fromDate, toDate);
caldroidFragment.setShowNavigationArrows(true);
caldroidFragment.setEnableSwipe(true);
cal = Calendar.getInstance();
cal.add(Calendar.DATE, 1);
Date selectFullMoon = cal.getTime();
fullmoon_day=new ArrayList<String>();
fullmoon_day.add("2016-12-27");
// caldroidFragment.setSelectedFullMoonDates(selectFullMoon);
caldroidFragment.setFullmoon(fullmoon_day);
cal = Calendar.getInstance();
cal.add(Calendar.DATE, 2);
Date selectHalfMoon = cal.getTime();
caldroidFragment.setSelectedHalfMoonDates(selectHalfMoon);
cal = Calendar.getInstance();
cal.add(Calendar.DATE, 3);
Date selectEvent = cal.getTime();
caldroidFragment.setSelectedEvents(selectEvent);
caldroidFragment.refreshView();
String text = "Today: " + formatter.format(new Date()) + "\n";
text += "Min Date: " + formatter.format(minDate) + "\n";
text += "Max Date: " + formatter.format(maxDate) + "\n";
text += "Select From Date: " + formatter.format(fromDate)
+ "\n";
text += "Select To Date: " + formatter.format(toDate) + "\n";
for (Date date : disabledDates) {
text += "Disabled Date: " + formatter.format(date) + "\n";
}
textView.setText(text);
}
});*/
}
/**
* Save current states of the Caldroid here
*/
@Override
protected void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
super.onSaveInstanceState(outState);
if (caldroidFragment != null) {
caldroidFragment.saveStatesToKey(outState, "CALDROID_SAVED_STATE");
}
}
public Runnable calendarUpdater = new Runnable() {
@Override
public void run() {
items.clear();
fullmoon_day.clear();
halfmoon_day.clear();
// Print dates of the current week
DateFormat df = new SimpleDateFormat("yyyy-MM-dd", Locale.US);
String itemvalue;
for (int i = 0; i < 7; i++) {
itemvalue = df.format(itemmonth.getTime());
itemmonth.add(GregorianCalendar.DATE, 1);
items.add("2016-12-12");
items.add("2016-12-07");
items.add("2016-12-15");
items.add("2016-12-20");
items.add("2016-11-30");
items.add("2016-11-28");
}
itemvalue = df.format(itemmonth.getTime());
itemmonth.add(GregorianCalendar.DATE, 1);
halfmoon_day.add("2016-12-12");
fullmoon_day.add("2016-12-27");
}
};
}
public class CaldroidSampleCustomAdapter extends CaldroidGridAdapter {
public CaldroidSampleCustomAdapter(Context context, int month, int year,
Map<String, Object> caldroidData,
Map<String, Object> extraData) {
super(context, month, year, caldroidData, extraData);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View cellView = convertView;
// For reuse
if (convertView == null) {
cellView = inflater.inflate(R.layout.custom_cell, null);
}
int topPadding = cellView.getPaddingTop();
int leftPadding = cellView.getPaddingLeft();
int bottomPadding = cellView.getPaddingBottom();
int rightPadding = cellView.getPaddingRight();
TextView tv1 = (TextView) cellView.findViewById(R.id.tv1);
ImageView moon = (ImageView) cellView.findViewById(R.id.moon);
ImageView fullmoon = (ImageView) cellView.findViewById(R.id.fullmoon);
ImageView date_icon = (ImageView) cellView.findViewById(R.id.date_icon);
tv1.setTextColor(Color.BLACK);
// Get dateTime of this cell
DateTime dateTime = this.datetimeList.get(position);
Resources resources = context.getResources();
// Set color of the dates in previous / next month
if (dateTime.getMonth() != month) {
tv1.setTextColor(resources.getColor(R.color.caldroid_darker_gray));
}
boolean shouldResetDiabledView = false;
boolean shouldResetSelectedView = false;
// Customize for disabled dates and date outside min/max dates
if ((minDateTime != null && dateTime.lt(minDateTime))
|| (maxDateTime != null && dateTime.gt(maxDateTime))
|| (disableDates != null && disableDates.indexOf(dateTime) != -1)) {
tv1.setTextColor(CaldroidFragment.disabledTextColor);
if (CaldroidFragment.disabledBackgroundDrawable == -1) {
cellView.setBackgroundResource(R.drawable.disable_cell);
} else {
cellView.setBackgroundResource(CaldroidFragment.disabledBackgroundDrawable);
}
if (dateTime.equals(getToday())) {
cellView.setBackgroundResource(R.drawable.current_date);
}
} else {
shouldResetDiabledView = true;
}
// Customize for selected dates
if (selectedDates != null && selectedDates.indexOf(dateTime) != -1) {
cellView.setBackgroundColor(resources.getColor(R.color.caldroid_sky_blue));
tv1.setTextColor(Color.BLACK);
} else {
shouldResetSelectedView = true;
}
if (selectedFullMoons != null && selectedFullMoons.indexOf(dateTime) != -1) {
fullmoon.setVisibility(View.VISIBLE);
} else fullmoon.setVisibility(View.INVISIBLE);
if (selectedHalfMoons != null && selectedHalfMoons.indexOf(dateTime) != -1) {
moon.setVisibility(View.VISIBLE);
} else moon.setVisibility(View.INVISIBLE);
if (selectedEvents != null && selectedEvents.indexOf(dateTime) != -1) {
date_icon.setVisibility(View.VISIBLE);
} else date_icon.setVisibility(View.INVISIBLE);
if (shouldResetDiabledView && shouldResetSelectedView) {
// Customize for today
if (dateTime.equals(getToday())) {
cellView.setBackgroundResource(R.drawable.current_date);
} else {
cellView.setBackgroundResource(R.drawable.cell_bg);
}
}
tv1.setText("" + dateTime.getDay());
// Somehow after setBackgroundResource, the padding collapse.
// This is to recover the padding
cellView.setPadding(leftPadding, topPadding, rightPadding,
bottomPadding);
// Set custom color if required
setCustomResources(dateTime, cellView, tv1);
return cellView;
}
}