• android 滚动时间选择器


    一.概述

    滚动时间选择现在貌似很常用,所以就总结一下,显示效果一般般 , 做个参考吧!

    以上就是效果图,可以滚动选择 日期时间, 由于是在 5.0系统运行的,貌似5.0系统做了什么变动,下面的 "取消","确定" 默认不会居中显示,我也不知道怎么才能让它居中显示, 但是在5.0以下系统运行 默认是居中显示的.  

    二.布局文件

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:padding="10dip" >
    
        <TimePicker
            android:timePickerMode="spinner"
            android:id="@+id/time_picker"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dip"
            android:layout_gravity="center" >
        </TimePicker>
    
    </LinearLayout>

    以上是 时间选择的布局文件,很简单,但是需要注意一点

    android:timePickerMode="spinner" 如果不加这句话, 在5.0以下系统运行完全没有任何问题,但是在5.0以上系统运行发现时间布局变成了一个圆形的钟表,所以如果不想显示钟表,就需要加这句话!

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:padding="10dip" >
    
        <DatePicker
            android:datePickerMode="spinner"
            android:calendarViewShown="false"
            android:id="@+id/date_picker"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dip"
            android:layout_gravity="center" >
        </DatePicker>
    
    </LinearLayout>

    以上是日期选择布局, 同样

    android:datePickerMode="spinner"
    android:calendarViewShown="false"
    这2句话是为了避免5.0以上系统运行出现"日历样式", 如果去掉这2句话 ,就会变成一个 日历样式, 5.0以下系统可以去掉/保留这2句话

    三.源码部分
    public void setTime(){
            //点击"时间"按钮布局 设置时间
            oplantime.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //自定义控件
                    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
                    View view = (LinearLayout) getLayoutInflater().inflate(R.layout.time_dialog, null);
                    final TimePicker timePicker = (TimePicker) view.findViewById(R.id.time_picker);
                    //初始化时间
                    calendar.setTimeInMillis(System.currentTimeMillis());
                    timePicker.setIs24HourView(true);
                    timePicker.setCurrentHour(calendar.get(Calendar.HOUR_OF_DAY));
                    timePicker.setCurrentMinute(Calendar.MINUTE);
                    //设置time布局
                    builder.setView(view);
                    builder.setTitle("设置时间信息");
                    builder.setPositiveButton("确  定", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            mHour = timePicker.getCurrentHour();
                            mMinute = timePicker.getCurrentMinute();
                            //时间小于10的数字 前面补0 如01:12:00
                            oplantime.setText(new StringBuilder().append(mHour < 10 ? "0" + mHour : mHour).append(":")
                                    .append(mMinute < 10 ? "0" + mMinute : mMinute).append(":00") );
                            dialog.cancel();
                        }
                    });
                    builder.setNegativeButton("取  消", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.cancel();
                        }
                    });
                    builder.create().show();
                }
            });
        }
    
        public void setDate(){
            //点击"日期"按钮布局 设置日期
            oplandate.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //通过自定义控件AlertDialog实现
                    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
                    View view = (LinearLayout) getLayoutInflater().inflate(R.layout.date_dialog, null);
                    final DatePicker datePicker = (DatePicker) view.findViewById(R.id.date_picker);
                    //设置日期简略显示 否则详细显示 包括:星期周
                    datePicker.setCalendarViewShown(false);
                    //初始化当前日期
                    calendar.setTimeInMillis(System.currentTimeMillis());
                    datePicker.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),
                            calendar.get(Calendar.DAY_OF_MONTH), null);
                    //设置date布局
                    builder.setView(view);
                    builder.setTitle("设置日期信息");
                    builder.setPositiveButton("确  定", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            //日期格式
                            StringBuffer sb = new StringBuffer();
                            sb.append(String.format("%d-%02d-%02d",
                                    datePicker.getYear(),
                                    datePicker.getMonth() + 1,
                                    datePicker.getDayOfMonth()));
                            oplandate.setText(sb);
                            //赋值后面闹钟使用
                            mYear = datePicker.getYear();
                            mMonth = datePicker.getMonth();
                            mDay = datePicker.getDayOfMonth();
                            dialog.cancel();
                        }
                    });
                    builder.setNegativeButton("取  消", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.cancel();
                        }
                    });
                    builder.create().show();
                }
            });
        }

    代码很简单 ,只需要在 Activity中 给 日期 和时间 Button 分别添加点击事件就行了. 

    dateBtn.setOnclickListener( setDate());

    timeBtn.setOnclickListener( setTime());



  • 相关阅读:
    GPG实践
    keepass口令管理实践
    2019-2020 20191204《信息安全导论》第十一周学习总结
    2019-2020 20191204第十周学习总结
    2019-2020 20191211第八周学习总结
    熟悉编程语言
    斐波那契数列
    辗转相除法
    20191210_获奖感言及学习总结
    2019-2020-1 20191210第11周学习总结
  • 原文地址:https://www.cnblogs.com/android-zcq/p/5435681.html
Copyright © 2020-2023  润新知