Android日期选择器,可以自定义样式

来源:互联网 发布:vb源代码 编辑:程序博客网 时间:2024/04/30 04:04

第一次写这个鬼。各位勿喷。好的给个支持。不好的指出来。大家一起学习进步!

http://download.csdn.net/detail/song_java1/9285399,,先附上源码下载地址



下面开始讲解:这个是效果图(字体样式。。嘿嘿。。不要介意)




整个项目需要用到的东西

主要的类是:RollPickerDialog类。继承AlertDialog。里面的注释小弟都写上啦。这里就不多做介绍


MainActivity类:

public class MainActivity extends Activity implements OnClickListener,
RollCallBack {
private Button but;
private TextView  tvyears, tvmonth, tvday;
String years, month, day;
private RollPickerDialog pickerDialog;// 日期选择器


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_main);


pickerDialog = new RollPickerDialog(MainActivity.this, this);


but = (Button) findViewById(R.id.but);


tvyears = (TextView) findViewById(R.id.tv_years);
tvmonth = (TextView) findViewById(R.id.tv_month);
tvday = (TextView) findViewById(R.id.tv_day);


but.setOnClickListener(this);


}


@Override
public void onClick(View v) {
if (v == but) {
setData();
pickerDialog.SetData(
0,
"选择生日",
new int[] { 1950,
Integer.parseInt(Util.getTodayYearTime()) },
Integer.parseInt(years) - 1950,
new int[] { 1, 12 }, Integer.parseInt(month),
new int[] { 1, 31 }, Integer.parseInt(day));
pickerDialog.show();
}
}
/**
* 获取TextView控件上的值。确保下次选择的时间正确
*/
private void setData() {
years = tvyears.getText().toString();
month = tvmonth.getText().toString();
day = tvday.getText().toString();
if (years.equals("") || years != null) {
years = "1990";
}
if (month.equals("") || month != null) {
month = "0";
}
if (day.equals("") || day != null) {
day = "0";
}
}
/**
*得到控件选择的时间
*/
@Override
public void setResaultRoll(int select1, int select2, int select3) {
try {


// 提交年龄
StringBuffer sb = new StringBuffer();
sb.append(select1).append(select2 < 10 ? "0" + select2 : select2)
.append(select3 < 10 ? "0" + select3 : select3);
String date = sb.toString();
if (Util.isGetTimebeforeNow(date)) {
years = date;
tvyears.setText(String.valueOf(select1)+"年");
tvmonth.setText(String.valueOf(select2)+"月");
tvday.setText(String.valueOf(select3)+"日");
} else {
Toast.makeText(getApplicationContext(), "选择的日期大于当前日期了", 1)
.show();
}
pickerDialog.dismiss();
} catch (Exception e) {
// TODO: handle exception
}
}


主要的说下pickerDialog.SetData这个方法。里面需要传入的参数:


我这里传入的参数是:0,"选择生日",new int[] { 1950,Integer.parseInt(Util.getTodayYearTime()) },Integer.parseInt(years) - 1950,new int[] { 1, 12 }, Integer.parseInt(month),new int[] { 1, 31 }, Integer.parseInt(day));



1 0