一个日期选择对话框

<?xml version="1.0" encoding="utf-8"?>

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent">

    <TableRow
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" android:layout_gravity="center">
        <CalendarView
                android:layout_width="180dp"
                android:layout_height="180dp"
                android:id="@+id/dialog_calendarView" android:layout_column="0"/>
    </TableRow>
    <TableRow
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">
        <Button
                android:layout_width="90dp"
                android:layout_height="match_parent"
                android:text="OK"
                android:id="@+id/dialog_ok"/>
    </TableRow>
</TableLayout>



package com.pandy.db.activity;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Handler;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.CalendarView;
import android.widget.EditText;
import com.pandy.db.R;
import com.pandy.db.utils.ToastUtils;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * Created with IntelliJ IDEA.
 * User: pandy
 * Date: 13-6-27
 * Time: 下午3:33
 * To change this template use File | Settings | File Templates.
 * 传入要现实值的输入框,然后用线程去设定这个值.
 */
public class CalendarViewDialog {
    private Activity activity;
    private EditText in_date;
    private Date date;

    public CalendarViewDialog(Activity activity, EditText in_date) {
        this.activity = activity;
        this.in_date = in_date;
    }

    public void show() {
        //初始化界面
        LayoutInflater factory = LayoutInflater.from(activity);
        View view = factory.inflate(R.layout._calendar_dialog, null);
        //创建对话框
        final AlertDialog dialog = new AlertDialog.Builder(activity)
                .setView(view)
                .create();
        //日历事件
        CalendarView dialog_calendarView = (CalendarView)view.findViewById(R.id.dialog_calendarView);
        dialog_calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
            @Override
            public void onSelectedDayChange(CalendarView calendarView, int i, int i2, int i3) {
                date = new java.sql.Date(calendarView.getDate());
                //启动线程去重画EditText控件
                final CalendarDialogHandler handler = new CalendarDialogHandler();
                Thread thread = new Thread(new Runnable() {
                    @Override
                    public void run() {
                        Message message = new Message();
                        message.what=0;
                        handler.sendMessage(message);
                    }
                });
                thread.start();

            }
        });

        Button dialog_ok = (Button)view.findViewById(R.id.dialog_ok);
        dialog_ok.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                dialog.dismiss();
            }
        });


        dialog.show();
    }

    //重画EditText控件的Handler
    class CalendarDialogHandler extends Handler {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if(0==msg.what){
                in_date.setText(date.toString());
            }
        }
    }

}

猜你喜欢

转载自panyongzheng.iteye.com/blog/1895280