Android控件之DatePicker、TimePicker选择器、NumberPicker

一、DatePicker继承自FrameLayout类,日期选择控件的主要功能是向 用户提供包含年、月、日的日期数据并允许用户对其修改。如果要捕获用户修改日期选择控件中的数据事件,需要为DatePicker添加 OnDateChangedListener监听器。

二、TimePicker也继承自FrameLayout类。时间选择控件向用户显示一天中的时间(可以为24小时,也可以为AM/PM制),并允 许用户进行选择。如果要捕获用户修改时间数据的事件,便需要为TimePicker添加OnTimeChangedListener监听器

以下模拟日期与时间选择控件的用法

目录结构

main.xml布局文件


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <DatePicker android:id="@+id/datePicker" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"/>
    <EditText android:id="@+id/dateEt"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:cursorVisible="false"
        android:editable="false"/>
    <TimePicker android:id="@+id/timePicker" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"/>
    <EditText android:id="@+id/timeEt"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:cursorVisible="false"
        android:editable="false"/>
</LinearLayout>

 


 

DpTpActivity类

package com.ljq.activity;

import java.util.Calendar;

import android.app.Activity;
import android.os.Bundle;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TimePicker;
import android.widget.DatePicker.OnDateChangedListener;
import android.widget.TimePicker.OnTimeChangedListener;

public class DpTpActivity extends Activity {
    private EditText dateEt=null;
    private EditText timeEt=null;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        dateEt=(EditText)findViewById(R.id.dateEt);
        timeEt=(EditText)findViewById(R.id.timeEt);
        DatePicker datePicker=(DatePicker)findViewById(R.id.datePicker);
        TimePicker timePicker=(TimePicker)findViewById(R.id.timePicker);
        
        Calendar calendar=Calendar.getInstance();
        int year=calendar.get(Calendar.YEAR);
        int monthOfYear=calendar.get(Calendar.MONTH);
        int dayOfMonth=calendar.get(Calendar.DAY_OF_MONTH);
        datePicker.init(year, monthOfYear, dayOfMonth, new OnDateChangedListener(){

            public void onDateChanged(DatePicker view, int year,
                    int monthOfYear, int dayOfMonth) {
                dateEt.setText("您选择的日期是:"+year+"年"+(monthOfYear+1)+"月"+dayOfMonth+"日。");
            }
            
        });
        
        timePicker.setOnTimeChangedListener(new OnTimeChangedListener(){

            public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
                timeEt.setText("您选择的时间是:"+hourOfDay+"时"+minute+"分。");
            }
            
        });
    }
}

 在布局的datepicker标签处添加android:calendarViewShown="false" 可以不显示日历

 

复制代码运行结果

NumberPicker的使用:

private void initNumberPicker() {
        Calendar calendar = Calendar.getInstance();
        np_year.setMaxValue(calendar.get(Calendar.YEAR));
        np_year.setMinValue(1920);
        np_year.setValue(1985);
        np_year.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);
        np_month.setMaxValue(12);
        np_month.setMinValue(1);
        np_month.setValue(1);
        np_month.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);
        np_day.setMaxValue(31);
        np_day.setMinValue(1);
        np_day.setValue(1);
        np_day.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);
        String[] lunar = {"农", "阳"};
        np_calendar.setDisplayedValues(lunar);
        np_calendar.setMinValue(0);
        np_calendar.setMaxValue(lunar.length - 1);
        np_calendar.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);

        //设置监听
        np_year.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
            @Override
            public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
                LogUtil.e("新值=" + newVal);
            }
        });
    }

效果图:

 

posted @ 2016-04-17 10:40  ts-android  阅读(511)  评论(0编辑  收藏  举报