日期滚轮显示

来源:互联网 发布:javascript初级视频 编辑:程序博客网 时间:2024/05/16 06:59

这里写图片描述
在一个界面上实现多个日期滚轮控件。

1、XML设置

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <RelativeLayout        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_marginTop="5dp" >        <TextView            android:id="@+id/TextView_data1"            style="@style/submit_text"            android:layout_alignParentLeft="true"            android:layout_alignParentTop="true"            android:text="出生日期一:" />        <ImageButton            android:id="@+id/ImageView_data1"            android:layout_width="25dp"            android:layout_height="25dp"            android:layout_alignParentRight="true"            android:layout_marginLeft="3dp"            android:background="@drawable/button_calendar" />        <EditText            android:id="@+id/EditText_data1"            style="@style/submit_edit0"            android:layout_toLeftOf="@id/ImageView_data1"            android:layout_toRightOf="@id/TextView_data1" />          </RelativeLayout>    <RelativeLayout        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_marginTop="5dp" >        <TextView            android:id="@+id/TextView_data2"            style="@style/submit_text"            android:layout_alignParentLeft="true"            android:text="出生日期二" />        <ImageButton            android:id="@+id/ImageView_data2"            android:layout_width="25dp"            android:layout_height="25dp"            android:layout_alignParentRight="true"            android:layout_marginLeft="3dp"            android:background="@drawable/button_calendar" />        <EditText            android:id="@+id/EditText_data2"            style="@style/submit_edit"            android:layout_toLeftOf="@id/ImageView_data2"            android:layout_toRightOf="@id/TextView_data2" />    </RelativeLayout></LinearLayout>

2、Java代码

package com.example.calendartest;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import com.caah.mpsclient.api.ui.enums.E_DateTimer;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.app.Activity;import android.app.DatePickerDialog;import android.app.Dialog;import android.app.ProgressDialog;import android.app.TimePickerDialog;import android.view.Menu;import android.view.View;import android.widget.DatePicker;import android.widget.EditText;import android.widget.ImageButton;import android.widget.TimePicker;public class MainActivity extends Activity {    protected int mYear, mMonth, mDay, mHour, mMinute, mSecond;    private ImageButton ImgBithday1, ImgBithday2;    private EditText editBirthday1, editBirthday2;    EDateSelect mDateNum;    public enum EDateSelect {        DATESELECT_ALL, // 全部        DATESELECT_Birthday1, // 出生日期1        DATESELECT_Birthday2 // 出生日期2    }    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mDateNum = EDateSelect.DATESELECT_ALL;        intview();    }    private void intview() {        editBirthday1 = (EditText) findViewById(R.id.EditText_data1);        editBirthday2 = (EditText) findViewById(R.id.EditText_data2);        ImgBithday1 = (ImageButton) findViewById(R.id.ImageView_data1);        ImgBithday1.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                mDateNum = EDateSelect.DATESELECT_Birthday1;                Message msg_B = new Message();                      msg_B.what = E_DateTimer.SHOW_DATAPICK;                MainActivity.this.dateandtimeHandler.sendMessage(msg_B);            }        });        ImgBithday2 = (ImageButton) findViewById(R.id.ImageView_data2);        ImgBithday2.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                mDateNum = EDateSelect.DATESELECT_Birthday2;                Message msg_C = new Message();                msg_C.what = E_DateTimer.SHOW_DATAPICK;                MainActivity.this.dateandtimeHandler.sendMessage(msg_C);            }        });        // 日期编辑框赋值        final Calendar c = Calendar.getInstance();        mYear = c.get(Calendar.YEAR);        mMonth = c.get(Calendar.MONTH);        mDay = c.get(Calendar.DAY_OF_MONTH);        updateDateDisplay();    }    /**     * 处理日期和时间控件的Handler     */    protected Handler dateandtimeHandler = new Handler() {        @Override        public void handleMessage(Message msg) {            switch (msg.what) {            case E_DateTimer.SHOW_DATAPICK:                showDialog(E_DateTimer.DATE_DIALOG_ID);                break;            /*case E_DateTimer.SHOW_TIMEPICK:                showDialog(E_DateTimer.TIME_DIALOG_ID);                break;             }  */        }    };    /**     * 更新显示日期控件     */    protected void updateDateDisplay() {        StringBuilder str = new StringBuilder().append(mYear).append("-")                .append((mMonth + 1) < 10 ? "0" + (mMonth + 1) : (mMonth + 1))                .append("-").append((mDay < 10) ? "0" + mDay : mDay);        if (mDateNum.equals(EDateSelect.DATESELECT_Birthday1))            editBirthday1.setText(str);        else if (mDateNum.equals(EDateSelect.DATESELECT_Birthday2))            editBirthday2.setText(str);        else {            editBirthday1.setText(str);            editBirthday2.setText(str);        }        try {            DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");            if (mDateNum.equals(EDateSelect.DATESELECT_Birthday1)) {                Date d1 = df.parse(editBirthday1.getText().toString());            } else if (mDateNum.equals(EDateSelect.DATESELECT_Birthday2)) {                Date d2 = df.parse(editBirthday2.getText().toString());            } else {                Date d1 = df.parse(editBirthday1.getText().toString());                Date d2 = df.parse(editBirthday2.getText().toString());            }        } catch (Exception e) {            e.printStackTrace();        }    }    protected Dialog onCreateDialog(int id) {        switch (id) {        case E_DateTimer.DATE_DIALOG_ID:            return new DatePickerDialog(this, mDateSetListener, mYear, mMonth,                    mDay);    /*  case E_DateTimer.TIME_DIALOG_ID:            return new TimePickerDialog(this, mTimeSetListener, mHour,            mMinute,            true);        }      */        return null;    }    /**     * 日期控件的事件     */    private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() {        public void onDateSet(DatePicker view, int year, int monthOfYear,                int dayOfMonth) {            mYear = year;            mMonth = monthOfYear;            mDay = dayOfMonth;            updateDateDisplay();        }    };}

3、控件个性化设置

1、E_DateTimer

package com.caah.mpsclient.api.ui.enums;public class E_DateTimer {    public static final int SHOW_DATAPICK = 0;    public static final int DATE_DIALOG_ID = 1;    //public static final int SHOW_TIMEPICK = 2;    //public static final int TIME_DIALOG_ID = 3;}

2、Styles

<style name="submit_edit">        <item name="android:layout_width">0dip</item>        <item name="android:layout_height">wrap_content</item>        <item name="android:layout_weight">1</item>        <item name="android:textSize">20sp</item>        <item name="android:layout_marginLeft">0dp</item>        <item name="android:gravity">center</item>        <item name="android:background">@drawable/text_view_border</item>    </style>

第二个EditText比第一个多一个属性设置。

<item name="android:background">@drawable/text_view_border</item>

3、text_view_border

<?xml version="1.0" encoding="UTF-8"?>  <shape xmlns:android="http://schemas.android.com/apk/res/android">      <solid android:color="#80ffffff" />      <stroke android:width="1dip" android:color="#aea594" />        <corners android:topLeftRadius="4dp"              android:topRightRadius="4dp"               android:bottomRightRadius="4dp"              android:bottomLeftRadius="4dp"/>  </shape>
1 0
原创粉丝点击