android日期控件显示
-
main.xml文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/starttime"/>
<EditText android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:focusable="true"
android:focusableInTouchMode="true"
android:id="@+id/starttime"/>
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/endstime"/>
<EditText android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:focusable="true"
android:focusableInTouchMode="true"
android:id="@+id/endtime"/>
</LinearLayout>
2.strings.xml文件
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, MainActivity!</string>
<string name="app_name">日期控件使用</string>
<string name="starttime">开始时间</string>
<string name="endstime">结束时间</string>
</resources>
3.activity文件
import java.util.Calendar;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.app.Dialog;
import android.os.Bundle;
import android.os.IBinder;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnFocusChangeListener;
import android.view.inputmethod.InputMethodManager;
import android.widget.DatePicker;
import android.widget.EditText;
public class MainActivity extends Activity {
private EditText startText;
private EditText endText;
private Calendar cdar=Calendar.getInstance();
private int mYear=cdar.get(Calendar.YEAR);
private int mMonth=cdar.get(Calendar.MONTH);
private int mDay=cdar.get(Calendar.DATE);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
startText=(EditText)findViewById(R.id.starttime);
endText=(EditText)findViewById(R.id.endtime);
//注册点击时间的监听
startText.setOnClickListener(new MyOnClickListener(startText.getId()));
endText.setOnClickListener(new MyOnClickListener(endText.getId()));
//焦点改变时的监听
startText.setOnFocusChangeListener(new MyOnFocusChangeListener(startText.getId()));
endText.setOnFocusChangeListener(new MyOnFocusChangeListener(endText.getId()));
}
// 隐藏手机键盘
private void hideIM(View edt){
try {
InputMethodManager im = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);
IBinder windowToken = edt.getWindowToken();
if (windowToken != null) {
im.hideSoftInputFromWindow(windowToken, 0);
}
}catch (Exception e) {
e.printStackTrace();
}
}
/**
* 创建要显示的对话框
*/
protected Dialog onCreateDialog(int id) {
switch (id) {
case R.id.starttime:
return new DatePickerDialog(this, new MyOnDateSetListener(id), mYear, mMonth, mDay);
case R.id.endtime:
return new DatePickerDialog(this, new MyOnDateSetListener(id), mYear, mMonth, mDay);
}
return null;
}
/**
* 点击事件的监听
* @author sweet
*
*/
private final class MyOnClickListener implements OnClickListener{
private int pointId;
public MyOnClickListener(int id){
this.pointId=id;
}
@Override
public void onClick(View v) {
hideIM(v);
showDialog(pointId);
}
}
/**
* 焦点改变时的监听对象
* @author sweet
*
*/
private final class MyOnFocusChangeListener implements OnFocusChangeListener{
private int pointId;
public MyOnFocusChangeListener(int id){
this.pointId=id;
}
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
hideIM(v);
showDialog(pointId);
}
}
}
/**
* 选择日期控件
* @author sweet
*
*/
private final class MyOnDateSetListener implements OnDateSetListener{
private int pointId;
public MyOnDateSetListener(int id){
this.pointId=id;
}
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth) {
String mm = monthOfYear<=9 ? "0" + (monthOfYear + 1) : String.valueOf(monthOfYear + 1);
String dd=dayOfMonth <= 9 ? "0" + dayOfMonth : String.valueOf(dayOfMonth);
((EditText)findViewById(pointId)).setText(String.valueOf(year) + "-" + mm + "-" + dd);
}
}
}