zoukankan      html  css  js  c++  java
  • 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());



  • 相关阅读:
    tile38 复制配置
    The Guardian’s Migration from MongoDB to PostgreSQL on Amazon RDS
    tile38 一款开源的geo 数据库
    sqler sql 转rest api 的docker 镜像构建(续)使用源码编译
    sqler sql 转rest api javascript 试用
    sqler sql 转rest api redis 接口使用
    sqler sql 转rest api 的docker image
    sqler sql 转rest api 的工具试用
    apache geode 试用
    benthos v1 的一些新功能
  • 原文地址:https://www.cnblogs.com/android-zcq/p/5435681.html
Copyright © 2011-2022 走看看