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());




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM