当前位置:   article > 正文

android日历之滚动选择日期类似ios_android calendarview 上下滑动

android calendarview 上下滑动

日历选择缩略

使用的控件 DatePicker


默认的DatePicker
默认DatePicker

添加如下代码即可设置成滚动的选择日历

android:datePickerMode=”spinner”
android:calendarViewShown=”false”


初始化日历控件设置
调用初始化方法

public void init(int year, int monthOfYear, int dayOfMonth,
OnDateChangedListener onDateChangedListener)

参数内容分别对应年、月、日

注意:

我们设置不同语言的日历,年月日显示的顺序是不一样的
所以我们要判断语言(特别的只显示部分时间,例如只显示年、月或者只显示年份等)
我们创建一个实例对象mDatePicker

if ( mDatePicker != null) {
            if (getResources().getConfiguration().locale.getCountry().equals("CN")){
                ((ViewGroup)((ViewGroup) mDatePicker.getChildAt(0)).getChildAt(0)).getChildAt(2).setVisibility(View.GONE);
            }
            else{
                ((ViewGroup)((ViewGroup) mDatePicker.getChildAt(0)).getChildAt(0)).getChildAt(1).setVisibility(View.GONE);
            }

        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

上述代码是只显示年、月,去除日,对于语言是中文,我们隐藏最后一行的view 。 对于语言是英语我们隐藏中间的view。


以上就可以显示对应的日期了,同时我们系统默认的分割线是蓝色的,我们可以自定义分割线颜色。调用如下函数
,颜色修改R.color.green

private void setDatePickerDividerColor(DatePicker datePicker){
        // Divider changing:

        // 获取 mSpinners
        LinearLayout llFirst = (LinearLayout) datePicker.getChildAt(0);

        // 获取 NumberPicker
        LinearLayout mSpinners = (LinearLayout) llFirst.getChildAt(0);
        for (int i = 0; i < mSpinners.getChildCount(); i++) {
            NumberPicker picker = (NumberPicker) mSpinners.getChildAt(i);

            Field[] pickerFields = NumberPicker.class.getDeclaredFields();
            for (Field pf : pickerFields) {
                if (pf.getName().equals("mSelectionDivider")) {
                    pf.setAccessible(true);
                    try {
                        pf.set(picker, new ColorDrawable(this.getResources().getColor(R.color.green)));
                    } catch (IllegalArgumentException e) {
                        e.printStackTrace();
                    } catch (Resources.NotFoundException e) {
                        e.printStackTrace();
                    } catch (IllegalAccessException e) {
                        e.printStackTrace();
                    }
                    break;
                }
            }
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/679980
推荐阅读
相关标签
  

闽ICP备14008679号