首页 文章

日期和时间选择器对话框

提问于
浏览
51

我想创建一个可以选择 timedate at the same time 的对话框 .
我知道there is not a default widget that can do that on Android . 我也知道open source projects关于如何做类似的工作人员 . 这个项目的问题是在对话框中我们有两个按钮:datePicker和timePicker .

enter image description here

这不是我想要做的 - 我希望日期和时间选择器同时出现 .
所以我认为两个主要问题是:

  • 首先使时间和日期选择器出现在同一对话框中 .

  • 第二个问题是改变时间和日期选择器的外观(橙色) .

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

enter image description here

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

你可以下载代码(这是我能做的最好的) . 您可以从here下载 .

3 回答

  • 2

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

    在这里,我可以为您提供一些帮助:您可以在 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>
    

    然后使用此布局创建对话框 .

    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获取值,请在对话框中添加“确定”按钮,然后在用户按“确定”时从Date-和TimePicker中读取日期和时间值 .

    为了制作与您的屏幕截图完全相同的内容,我建议您使用自己的逻辑来定制所有内容 .

  • 0

    要更改蓝条颜色,请尝试以下操作 .

    按如下方式定义您自己的主题,扩展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

  • 77

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

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

相关问题