Android开发中能不能把时间控件跟日期控件合在一起
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android开发中能不能把时间控件跟日期控件合在一起相关的知识,希望对你有一定的参考价值。
安卓里面的时间控件与日期控件都是分开的,如果要同时使用的话用户体验度那肯定不好,整合了安卓中的时间与日期控件,可以同时显示出来方便用户进行选择,使用时只需要将文件导入项目中,再需要用到的地方使用如下代码[html] view plaincopyprint?
package com.andyidea.calenderdemo;
import java.util.Calendar;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TimePicker;
public class MainActivity extends Activity
private EditText showDate = null;
private Button pickDate = null;
private EditText showTime = null;
private Button pickTime = null;
private static final int SHOW_DATAPICK = 0;
private static final int DATE_DIALOG_ID = 1;
private static final int SHOW_TIMEPICK = 2;
private static final int TIME_DIALOG_ID = 3;
private int mYear;
private int mMonth;
private int mDay;
private int mHour;
private int mMinute;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initializeViews();
final Calendar c = Calendar.getInstance();
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);
mHour = c.get(Calendar.HOUR_OF_DAY);
mMinute = c.get(Calendar.MINUTE);
setDateTime();
setTimeOfDay();
/**
* 初始化控件和UI视图
*/
private void initializeViews()
showDate = (EditText) findViewById(R.id.showdate);
pickDate = (Button) findViewById(R.id.pickdate);
showTime = (EditText)findViewById(R.id.showtime);
pickTime = (Button)findViewById(R.id.picktime);
pickDate.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
Message msg = new Message();
if (pickDate.equals((Button) v))
msg.what = MainActivity.SHOW_DATAPICK;
MainActivity.this.dateandtimeHandler.sendMessage(msg);
);
pickTime.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
Message msg = new Message();
if (pickTime.equals((Button) v))
msg.what = MainActivity.SHOW_TIMEPICK;
MainActivity.this.dateandtimeHandler.sendMessage(msg);
);
/**
* 设置日期
*/
private void setDateTime()
final Calendar c = Calendar.getInstance();
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);
updateDateDisplay();
/**
* 更新日期显示
*/
private void updateDateDisplay()
showDate.setText(new StringBuilder().append(mYear).append("-")
.append((mMonth + 1) < 10 ? "0" + (mMonth + 1) : (mMonth + 1)).append("-")
.append((mDay < 10) ? "0" + mDay : mDay));
/**
* 日期控件的事件
*/
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();
;
/**
* 设置时间
*/
private void setTimeOfDay()
final Calendar c = Calendar.getInstance();
mHour = c.get(Calendar.HOUR_OF_DAY);
mMinute = c.get(Calendar.MINUTE);
updateTimeDisplay();
/**
* 更新时间显示
*/
private void updateTimeDisplay()
showTime.setText(new StringBuilder().append(mHour).append(":")
.append((mMinute < 10) ? "0" + mMinute : mMinute));
/**
* 时间控件事件
*/
private TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener()
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute)
mHour = hourOfDay;
mMinute = minute;
updateTimeDisplay();
;
@Override
protected Dialog onCreateDialog(int id)
switch (id)
case DATE_DIALOG_ID:
return new DatePickerDialog(this, mDateSetListener, mYear, mMonth,
mDay);
case TIME_DIALOG_ID:
return new TimePickerDialog(this, mTimeSetListener, mHour, mMinute, true);
return null;
@Override
protected void onPrepareDialog(int id, Dialog dialog)
switch (id)
case DATE_DIALOG_ID:
((DatePickerDialog) dialog).updateDate(mYear, mMonth, mDay);
break;
case TIME_DIALOG_ID:
((TimePickerDialog) dialog).updateTime(mHour, mMinute);
break;
/**
* 处理日期和时间控件的Handler
*/
Handler dateandtimeHandler = new Handler()
@Override
public void handleMessage(Message msg)
switch (msg.what)
case MainActivity.SHOW_DATAPICK:
showDialog(DATE_DIALOG_ID);
break;
case MainActivity.SHOW_TIMEPICK:
showDialog(TIME_DIALOG_ID);
break;
;
参考技术A 把他们放在一个布局中不就行了。不过你想这两个有联系的话,估计没有这种专门的控件,能够继承这两个控件,得自己写程序实现。
android日历控件
android日历控件开发,比较好的开源日历控件。
1.DatePicker在Android中,DatePicker用来实现日期输入设置,日期的设置范围为1900年1月1日至2100年12月31日。
1.1常用xml属性
DatePicker的常用xml属性如图1所示:
图1 DatePicker常用xml属性
其中,android:calendarViewShown[boolean]用于设置是否显示calendar view;android:endYear[int]用于设置截至日期;android:maxDate[int]用于设置最大的日期;android:minDate[int]用于设置最小的日期;android:spinnersShown[boolean]用于设置是否显示spinners;android:startYear[int]用于设置起始日期。
1.2常用方法
DatePicker的常用方法有以下一些:
(1)public CalendarView getCalendarView(); //获取CalendarView
(2)public boolean getCalendarViewShown(); //获取CalendarView是否显示
(3)public int getDayOfMonth(); //获取当前日期的日
(4)public long getMaxDate(); //获取最大日期
(5)public long getMinDate(); //获取最小日期
(6)public int getMonth(); //获取当前日期的月
(7)public boolean getSpinnersShown(); //获取Spinners是否显示
(8)public int getYear(); //获取当前日期的年
(9)public void init(int year,int monthOfYear,int dayOfMonth,
DatePicker.OnDateChangedListener onDateChangedListener); //初始化日期
(10)public void setCalendarViewShown(boolean shown); //设置是否显示CalendarView
(11)public void setMaxDate(long maxDate); //设置最大日期
(12)public void setMinDate(long minDate); //设置最小日期
(13)public void setSpinnersShown(boolean shown); //设置是否显示Spinners
(14)public void updateDate(int year,int month,int dayOfMonth); //更新当前日期
2.TimePicker
在Android中,TimePicker用来实现时间输入设置,可以选择12或24小时模式。TimePicker的常用方法有以下一些:
(1)public Integer getCurrentHour(); //获取当前时间的小时
(2)public Integer getCurrentMinute(); //获取当前时间的分钟
(3)public boolean is24HourView(); //获取是否为24小时模式
(4)public void setCurrentHour(Integer currentHour); //设置当前时间的小时
(5)public void setCurrentMinute(Integer currentMinute); //设置当前时间的分钟
(6)public void setIs24HourView(Boolean is24HourView); //设置24小时模式
3.DatePickerDialog
在Android中,DatePickerDialog用来显示日期对话框。DatePickerDialog的常用方法有以下一些:
(1)public DatePicker getDatePicker(); //获取DatePicker中的日期值
(2)public void onClick(DialogInterface dialog,int which); //响应对话框中的点击事件
(3)public void onDateChanged(DatePicker view,int year,int month,int day); //响应日期改变事件
(4)public void updateDate(int year,int monthOfYear,int dayOfMonth); //更新当前日期
4.TimePickerDialog
在Android中,TimePickerDialog用来显示时间对话框。TimePickerDialog的常用方法有以下一些:
(1)public void onClick(DialogInterface dialog,int which); //响应对话框中的点击事件
(2)public void onTimeChanged(TimePicker view,int hourOfDay,int minute); //响应时间改变事件
(3)public void updateTime(int hourOfDay,int minuteOfHour); //更新当前时间
5.AnalogClock
在Android中,AnalogClock用于显示指针式时钟,该时钟仅有时钟和分钟两个指针。
6.DigitalClock
在Android中,DigitalClock用来显示数字式时钟,显示格式为HH:MM:SS AM/PM。 参考技术A 推荐:https://github.com/dengshiwei/CalendarComponent本回答被提问者采纳
以上是关于Android开发中能不能把时间控件跟日期控件合在一起的主要内容,如果未能解决你的问题,请参考以下文章
关于android中Tab的控件,还有怎么样能现实一个表格(跟真的表格一样要有格子),能够把计算得到的数据
Android从零单排系列十一《Android视图控件——日历日期时间选择控件》