我有一个自定义日历视图,我想显示某些可绘制的视图,具体取决于是选择了哪一天,还是特定日期是当前日期
当前日期图片
这将是选定的日期图像
我有一个选择器用于选择按预期工作的日期但是如果我选择当前日期然后选择另一个,则当前日期图像不显示没有圆圈的数字,就像任何其他日期看起来那样未选中。
所以问题是,如果选择了新的日期,我怎样才能将背景更改回当前日期,因为它们是2个不同的抽屉?
这是我所选日期背景的选择器
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_activated="true" android:drawable="@drawable/day_selected"/>
<item android:state_pressed="true" android:drawable="@drawable/day_selected"/>
<item android:state_focused="true" android:drawable="@drawable/day_selected"/>
<item android:state_selected="true" android:drawable="@drawable/day_selected"/>
<item android:drawable="@drawable/normal_day"/>
</selector>
而今天的drawable只是一个可绘制的形状
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
<solid android:color="#cbcbcb"/>
</shape>
这是我的适配器的一部分
final TextView dayTV = (TextView)v.findViewById(R.id.textView1);
Calendar cal = Calendar.getInstance(TimeZone.getDefault(), Locale.getDefault());
Day d = dayList.get(position);
if(d.getYear() == cal.get(Calendar.YEAR) && d.getMonth() == cal.get(Calendar.MONTH) && d.getDay() == cal.get(Calendar.DAY_OF_MONTH)){
dayTV.setBackgroundResource(R.drawable.today);
}
dayTV.setOnFocusChangeListener(new OnFocusChangeListener(){
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(!hasFocus){
Calendar cal = Calendar.getInstance(TimeZone.getDefault(), Locale.getDefault());
Day d = dayList.get(position);
if(d.getYear() == cal.get(Calendar.YEAR) && d.getMonth() == cal.get(Calendar.MONTH) && d.getDay() == cal.get(Calendar.DAY_OF_MONTH)){
dayTV.setBackgroundResource(R.drawable.today);
}else{
dayTV.setBackgroundResource(R.drawable.date_number_background);
}
}
}
});
我认为使用onFocusChangeListener
会起作用,但它永远不会得到关注,并且使用onClickListener
设置焦点只会让一切都搞砸了