日期滾輪顯示

這裏寫圖片描述
在一個界面上實現多個日期滾輪控件。

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>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章