日期和时间选择器对话框(Date and time picker dialog)

2019-07-18 02:09发布

我想创建一个对话框,可以选择时间 ,并在同一时间日期
我知道没有一个默认的小工具,可以做到这一点在Android上 。 我也知道,有开源项目如何做类似的工作人员。 在这个项目中的问题是,在该对话框中,我们有两个按钮: 日期选择器timePicker。

而这不是我想做的事 - 我想日期和时间选择器出现在同一时间。
所以我觉得这两个主要问题是:

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

第一个问题是由Bhavesh解决。 以下是我得到:

现在的问题是,我想改变这一切的蓝条颜色 橙色
我加android:calendarViewShown="false" ,除去在正确的日历:)谢谢Bhavesh和我改变了主题HOLO
以下是我得到:

您可以下载该代码(这是我能做的最好的)。 您可以下载在这里 。

Answer 1:

首先让时间和日期选择器出现在同一个对话框

在这里,我可以帮你一些什么:您可以创建包含的布局DatePickerTimePickerLinearLayout设置为垂直方向。

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>

然后,使用此布局来创建对话框。

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);

要获得从日期 - 当用户已经完成设置TimePicker的价值观,你的对话框中添加一个OK按钮,当用户按下OK,然后读取来自日期 - 和TimePicker的日期和时间值。

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



Answer 2:

要改变蓝条的颜色尝试以下。

定义你自己的主题如下,延伸THEME_HOLO_DARK

尝试如下: -

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

检查下列各项变化的基本主题,色彩的,Android的应用程序



Answer 3:

有很多可用的解决方案,还有就是其中之一,我喜欢这种简单的方法:

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();
}


文章来源: Date and time picker dialog