Android Studio增加时间日期

不会做Android Studio的时间日期选择框

img

要求1、要有xml和java,并且可以运行。

2、是以悬浮窗的形式出现,点击EditText出现图片所示内容。

3、可以加企鹅56022846

根据您的要求,您需要实现一个点击EditText弹出一个悬浮窗的形式的时间日期选择框。您可以参考以下的xml和java代码,它们可以实现您想要的功能。


xml代码:

XML

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="10dp">

    <EditText
        android:id="@+id/et_date_time"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请选择时间和日期"
        android:focusable="false"/>

</LinearLayout>
java代码:


import androidx.appcompat.app.AppCompatActivity;
import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.view.View;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TimePicker;
import java.util.Calendar;

public class MainActivity extends AppCompatActivity {

    private EditText etDateTime; //用于显示时间日期的输入框
    private Calendar calendar; //用于获取当前时间日期的日历对象

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //初始化控件和日历对象
        etDateTime = findViewById(R.id.et_date_time);
        calendar = Calendar.getInstance();

        //给输入框设置点击监听器
        etDateTime.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //弹出时间选择框
                showTimePickerDialog();
            }
        });
    }

    //显示时间选择框的方法
    private void showTimePickerDialog() {
        //创建一个时间选择器对话框,参数依次为:上下文、监听器、时、分、是否为24小时制
        TimePickerDialog timePickerDialog = new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
            @Override
            public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                //当用户设置了时间后,将时间显示在输入框中,并且弹出日期选择框
                etDateTime.setText(hourOfDay + ":" + minute);
                showDatePickerDialog();
            }
        }, calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), true);
        //显示时间选择器对话框
        timePickerDialog.show();
    }

    //显示日期选择框的方法
    private void showDatePickerDialog() {
        //创建一个日期选择器对话框,参数依次为:上下文、监听器、年、月、日
        DatePickerDialog datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
                //当用户设置了日期后,将日期追加到输入框中
                etDateTime.append(" " + year + "-" + (month + 1) + "-" + dayOfMonth);
            }
        }, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
        //显示日期选择器对话框
        datePickerDialog.show();
    }
}

您可以将这些代码复制到您的Android Studio项目中,并且运行看看效果。


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:hint="点击选择日期和时间" />

</RelativeLayout>

import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.view.View;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TimePicker;
import androidx.appcompat.app.AppCompatActivity;
import java.util.Calendar;

public class MainActivity extends AppCompatActivity {

    private EditText editText;
    private Calendar calendar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        editText = findViewById(R.id.editText);
        calendar = Calendar.getInstance();

        editText.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showDateTimePicker();
            }
        });
    }

    private void showDateTimePicker() {
        DatePickerDialog datePickerDialog = new DatePickerDialog(
                this,
                new DatePickerDialog.OnDateSetListener() {
                    @Override
                    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                        calendar.set(Calendar.YEAR, year);
                        calendar.set(Calendar.MONTH, monthOfYear);
                        calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);

                        TimePickerDialog timePickerDialog = new TimePickerDialog(
                                MainActivity.this,
                                new TimePickerDialog.OnTimeSetListener() {
                                    @Override
                                    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                                        calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
                                        calendar.set(Calendar.MINUTE, minute);

                                        updateEditText();
                                    }
                                },
                                calendar.get(Calendar.HOUR_OF_DAY),
                                calendar.get(Calendar.MINUTE),
                                true
                        );
                        timePickerDialog.show();
                    }
                },
                calendar.get(Calendar.YEAR),
                calendar.get(Calendar.MONTH),
                calendar.get(Calendar.DAY_OF_MONTH)
        );
        datePickerDialog.show();
    }

    private void updateEditText() {
        String dateTimeFormat = "yyyy-MM-dd HH:mm";
        String selectedDateTime = android.text.format.DateFormat.format(dateTimeFormat, calendar).toString();
        editText.setText(selectedDateTime);
    }
}


官方有选择框吗?你只要回调就可以了。

【以下回答由 GPT 生成】

我可以为您提供实现该功能的解决方案。

首先,您可以在XML布局文件中添加一个EditText视图,用于接收用户的输入和显示选定的日期和时间。例如,您可以这样编写布局文件 activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/editTextDateTime"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="30dp"
        android:clickable="true"
        android:hint="点击选择日期和时间"
        android:inputType="none"
        android:focusableInTouchMode="false"/>

</RelativeLayout>

接下来,在MainActivity的Java代码中,您需要设置点击EditText时弹出日期和时间选择框的逻辑。您可以使用DatePickerDialog和TimePickerDialog来实现。

import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TimePicker;

import java.text.DateFormat;
import java.util.Calendar;

public class MainActivity extends AppCompatActivity {

    private EditText editTextDateTime;
    private Calendar calendar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        editTextDateTime = findViewById(R.id.editTextDateTime);

        editTextDateTime.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showDateTimePickerDialog();
            }
        });

        calendar = Calendar.getInstance();
    }

    private void showDateTimePickerDialog() {
        DatePickerDialog datePickerDialog = new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
                calendar.set(Calendar.YEAR, year);
                calendar.set(Calendar.MONTH, month);
                calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);

                showTimePickerDialog();
            }
        }, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));

        datePickerDialog.show();
    }

    private void showTimePickerDialog() {
        TimePickerDialog timePickerDialog = new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() {
            @Override
            public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
                calendar.set(Calendar.MINUTE, minute);

                updateDateTimeInEditText();
            }
        }, calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), true);

        timePickerDialog.show();
    }

    private void updateDateTimeInEditText() {
        DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.SHORT);
        editTextDateTime.setText(dateFormat.format(calendar.getTime()));
    }
}

这样,当用户点击EditText时,会先弹出日期选择框,选择完日期后再弹出时间选择框,最后将选择的日期和时间显示在EditText中。

请注意,由于我的解决方案中使用了AppCompatActivity和一些支持库,您可能需要在build.gradle文件中添加相应的依赖项。

如果您有任何疑问和进一步交流需求,可以通过添加企鹅号 56022846 进行联系。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

随便搜索了一个,可以参考,https://blog.csdn.net/u012556114/article/details/82256821
不懂就问

结合GPT给出回答如下请题主参考
好的,下面是Android Studio中增加时间日期的步骤,并且提供一个简单的时间日期选择框的实现方法:

  1. 首先,在xml布局文件中添加EditText控件。

    <EditText
        android:id="@+id/editText_date"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请选择日期"/>
    
  2. 在java文件中获取EditText控件并设置点击事件。

    EditText editTextDate = findViewById(R.id.editText_date);
    editTextDate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            showDatePickerDialog();
        }
    });
    
  3. 实现showDatePickerDialog()方法,在其中创建DatePickerDialog对话框,并设置日期选择监听事件。

    private void showDatePickerDialog() {
        Calendar calendar = Calendar.getInstance();
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH);
        int day = calendar.get(Calendar.DAY_OF_MONTH);
    
        DatePickerDialog datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker datePicker, int year, int month, int day) {
                String date = year + "年" + (month + 1) + "月" + day + "日";
                editTextDate.setText(date);
            }
        }, year, month, day);
        datePickerDialog.show();
    }
    
  4. 运行程序,点击EditText控件后会弹出日期选择框,日期选择完成后会将选择的日期显示在EditText控件中。

可以看看gpt了,已经有很多大佬回到你的问题了

可以看看gpt了,已经有很多大佬回到你的问题了


import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TimePicker;
import java.text.DateFormat;
import java.util.Calendar;
public class MainActivity extends AppCompatActivity {
    private EditText editTextDateTime;
    private Calendar calendar;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editTextDateTime = findViewById(R.id.editTextDateTime);
        editTextDateTime.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showDateTimePickerDialog();
            }
        });
        calendar = Calendar.getInstance();
    }
    private void showDateTimePickerDialog() {
        DatePickerDialog datePickerDialog = new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
                calendar.set(Calendar.YEAR, year);
                calendar.set(Calendar.MONTH, month);
                calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
                showTimePickerDialog();
            }
        }, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
        datePickerDialog.show();
    }
    private void showTimePickerDialog() {
        TimePickerDialog timePickerDialog = new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() {
            @Override
            public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
                calendar.set(Calendar.MINUTE, minute);
                updateDateTimeInEditText();
            }
        }, calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), true);
        timePickerDialog.show();
    }
    private void updateDateTimeInEditText() {
        DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.SHORT);
        editTextDateTime.setText(dateFormat.format(calendar.getTime()));
    }
}