date和时间select器对话框

我想创build一个对话框,可以同时select时间date
我知道, 没有一个默认的小部件,可以在Android上做到这一点 。 我也知道有类似的工作人员如何开源项目 。 在这个项目中的问题是,在对话框中我们有两个button: datePickertimePicker

在这里输入图像说明

这不是我想要做的 – 我希望date和时间select器同时出现。
所以我觉得两个主要的问题是:

  1. 首先让时间和dateselect器出现在同一个对话框中。
  2. 第二个问题是改变时间和dateselect器(橙色)的外观。

第一个问题由Bhavesh解决。 这是我得到的:

在这里输入图像说明

现在的问题是,我想要将所有蓝色条的颜色更改为橙色
我添加了android:calendarViewShown="false"来删除右侧的日历:)谢谢Bhavesh,我把主题改成了HOLO
这是我得到的:

在这里输入图像说明

你可以下载代码(这是我能做的最好的)。 你可以从这里下载。

首先让时间和dateselect器出现在同一个对话框中

在这里,我可以帮助你一些:你可以创build一个由LinearLayout中的DatePickerTimePicker组成的布局,方向设置为垂直。

custom_dialog.xml:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <DatePicker android:id="@+id/datePicker1" android:layout_width="wrap_content" android:layout_height="wrap_content" > </DatePicker> <TimePicker android:id="@+id/timePicker1" android:layout_width="wrap_content" android:layout_height="wrap_content" > </TimePicker> </LinearLayout> 

然后使用这个布局来创build你的对话框。

 Dialog dialog = new Dialog(mContext); dialog.setContentView(R.layout.custom_dialog); dialog.setTitle("Custom Dialog"); 

要对用户与TimePicker交互作出反应,请执行以下操作:

 TimePicker tp = (TimePicker)dialog.findViewById(R.id.timepicker1); tp.setOnTimeChangedListener(myOnTimechangedListener); 

要在用户完成设置时从Date-和TimePicker中获取值,请在对话框中添加一个OKbutton,然后在用户按下OK时从Date-和TimePicker中读取date和时间值。

为了使你的屏幕截图看起来完全一样,我build议你用自己的逻辑来定制所有的东西。

要更改蓝条的颜色,请尝试下面的内容。

定义你自己的主题如下,这扩展了THEME_HOLO_DARK

尝试如下: –

 <style name="testo" parent="@android:style/Widget.DeviceDefault.DatePicker"> <item name="android:divider">@drawable/MyDivider</item> </style> 

检查以下change-basic-theme-color-of-android-application

有很多解决scheme,其中有一个,我喜欢这个简单的方法:

 String mDateTime; void getDateTime(){ final Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH); int day = c.get(Calendar.DAY_OF_MONTH); final int hour = c.get(Calendar.HOUR_OF_DAY); final int minute = c.get(Calendar.MINUTE); mDateTime = ""; new DatePickerDialog( mContext, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { mDateTime = year +"-"+ month +"-"+ dayOfMonth; new Handler().postDelayed(new Runnable() { @Override public void run() { new TimePickerDialog(mContext, new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { mDateTime+=" "+hourOfDay+":"+minute; } }, hour, minute, false).show(); } },500); } }, year, month, day).show(); }