本以为日期类的那个上下滚动的空间是自己定义的view.今天才知道原来是android定义好的.今天吧我写的小例子贴出来.万一以后忘了,也好找到,本例只有一个布局文件和一个activity类
布局简单:
<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<EditText
android:id="@+id/et_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="17dp"
android:ems="10"
android:hint="日期" >
<requestFocus />
</EditText>
<Button
android:id="@+id/btn_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/et_time"
android:layout_toRightOf="@+id/et_date"
android:text="日期" />
<Button
android:id="@+id/btn_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/et_time"
android:layout_alignBottom="@+id/et_time"
android:layout_alignRight="@+id/btn_date"
android:text="时间" />
<EditText
android:id="@+id/et_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/et_date"
android:layout_below="@+id/et_date"
android:layout_marginTop="22dp"
android:ems="10"
android:hint="时间" />
</RelativeLayout>
主代码类:
package com.example.testdate;
import java.util.Calendar;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.app.TimePickerDialog;
import android.app.TimePickerDialog.OnTimeSetListener;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TimePicker;
public class MainActivity extends Activity implements OnClickListener {
private int year;// 年
private int month;// 月
private int day;// 日
private int hour;// 时
private int minute;// 分
private EditText et_date, et_time;// 显示日期和时间
private Button btn_date, btn_time;// 俩个按钮
private static final int UPDATE_DATE = 1;// 更新ui的时候判断是更新时间还是更新日期
private static final int UPDATE_TIME = 2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/**
* 初始化控件
*/
et_date = (EditText) this.findViewById(R.id.et_date);
et_time = (EditText) this.findViewById(R.id.et_time);
btn_date = (Button) this.findViewById(R.id.btn_date);
btn_date.setOnClickListener(this);
btn_time = (Button) this.findViewById(R.id.btn_time);
btn_time.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Calendar c = Calendar.getInstance();
switch (v.getId()) {
case R.id.btn_date:
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH);
day = c.get(Calendar.DAY_OF_MONTH);
// DatePickerDialog5个参数.1:上下文,2:设置日期的回调.可以在里面调用更新ui的方法更新ui,345就是初始化时候的年月日了.
new DatePickerDialog(this, new OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
MainActivity.this.year = year;// 将设置好的值复制给year,应为他的传入的参数是year,所以赋值的时候要指定是那个year
MainActivity.this.month = monthOfYear;
MainActivity.this.day = dayOfMonth;
updateDisplay(UPDATE_DATE);// 更新ui的方法
}
}, year, month, day).show();// 不要忘了show一把
break;
case R.id.btn_time:
hour = c.get(Calendar.HOUR_OF_DAY);
minute = c.get(Calendar.MINUTE);
// TimePickerDialog的5个参数,1:上下文this,2回调对象.这里用匿名类了(反正也不用这个实力对象),3和4是初始化时的时间,5是否以24小时的格式显示
new TimePickerDialog(this, new OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
hour = hourOfDay;
MainActivity.this.minute = minute;
updateDisplay(UPDATE_TIME);// 更新时间的ui
}
}, hour, minute, true).show();
break;
default:
break;
}
}
/**
* 更新ui
*
* @param i
*/
private void updateDisplay(int i) {
switch (i) {
case UPDATE_DATE:// 更新日期
et_date.setText(year + " - " + month + " - " + day);
break;
case UPDATE_TIME:// 更新时间
et_time.setText(hour + " : " + minute);
break;
default:
break;
}
}
}
效果图