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;
        }

    }