在一个界面上实现多个日期滚轮控件。
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>