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日历控件怎么获得所选日期的单元格的焦点

关于android中Tab的控件,还有怎么样能现实一个表格(跟真的表格一样要有格子),能够把计算得到的数据

Android从零单排系列十一《Android视图控件——日历日期时间选择控件》

android日历控件

android怎么把3.0自带日历控件calendarview每个日期按钮设置事件,如跳转之类的。

WPF中能把不是表格类型的数据用DataGridView控件以多行多列的方式显示出来吗?