当前位置: 首页 > 知识库问答 >
问题:

Datepicker:如何在单击按钮时弹出Datepicker并在textview中存储值

艾令秋
2023-03-14
 <TextView
            android:id="@+id/tv_arrival"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:text="@string/arrivaldate"/>

        <Button
            android:id="@+id/btn_arrival"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:text="Set"/>

我想显示datepicker弹出窗口。我找到了一些例子,但我没有正确理解。我有一个按钮,我希望当我点击按钮时,datepicker对话框应该弹出,并且在设置日期后,日期应该显示在。请提供我的样本代码或良好的链接。

 btn_arrival.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                final Dialog setDate = new Dialog(MainActivity.this);
                setDate.requestWindowFeature(Window.FEATURE_NO_TITLE);
                setDate.setContentView(R.layout.dialog_setdate);
                setDate.show();
                DatePicker date = (DatePicker) setDate.findViewById(R.id.datePicker);
                date.setMinDate(System.currentTimeMillis() - 1000);
                Calendar calender = Calendar.getInstance();

                DatePicker.OnDateChangedListener onDateChangedListener = new DatePicker.OnDateChangedListener() {
                    @Override
                    public void onDateChanged(DatePicker view, int years, int monthOfYear, int dayOfMonth) {
                        day = dayOfMonth;
                        year = years;
                        month = monthOfYear;
                        setDate.dismiss();
                        txt_arrival.setText("Arrival Date on: " + day + "." + (month + 1) + "." + year);
                        tv_departure.setText("Departure Date on: " + (day + 1) + "." + (month + 1) + "." + year + "");
                    }
                };

                day = calender.get(Calendar.DAY_OF_MONTH);
                month = calender.get(Calendar.MONTH);
                year = calender.get(Calendar.YEAR);

                date.init(year, month, day, onDateChangedListener);

            }

        });

共有2个答案

金昌胤
2023-03-14

这是针对DatePicker的AlertDialog片段的工作,该片段在设置时将日期放入TextView。

日期选择器的xml

您可以省略CardView根布局,并使用诸如LinearLayout、RelativeLayout等任何内容。。

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="8dp"
card_view:cardElevation="24dp">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text=""
        android:id="@+id/date_time_title"/>

    <DatePicker
        android:id="@+id/date_picker"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:calendarViewShown="true"
        android:spinnersShown="false"
        android:layout_weight="1"/>

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:id="@+id/date_time_not_set"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Cancel"
            android:layout_gravity="start"/>

        <Button
            android:id="@+id/date_time_set"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Set"
            android:layout_gravity="end"/>

    </FrameLayout>

</LinearLayout>

活动/片段的java文件

[...] //other code
btn_arrival.setOnClickListener( this );

// Activity/Fragment implements onClick()
@Override
public void onClick( final View v )
{
    switch ( v.getId( ) )
    {
        case R.id.btn_arrival: createDatePicker( tv_arrival); break;
    }
}

private void createDatePicker( final TextView tv_arrival )
{
    final View dialogView = View.inflate( getActivity( ), R.layout.date_picker, null );
    final AlertDialog alertDialog = new AlertDialog.Builder( getActivity( ) ).create( );
    TextView tv = ( TextView ) dialogView.findViewById( R.id.date_time_title );
    tv.setText( ); // set title here
    dialogView.findViewById( R.id.date_time_set ).setOnClickListener( new View.OnClickListener( )
    {
        @Override
        public void onClick( View view )
        {
            setDatePicker( dialogView, tv_arrival );
            alertDialog.dismiss( );
        }
    } );
    dialogView.findViewById( R.id.date_time_not_set ).setOnClickListener( new View.OnClickListener( )
    {
        @Override
        public void onClick( View v )
        {
            alertDialog.dismiss( );
        }
    } );
    alertDialog.setView( dialogView );
    alertDialog.show( );
}

 private void setDatePicker ( View dialogView, TextView tv_arrival )
{
    DatePicker datePicker = ( DatePicker ) dialogView.findViewById( R.id.date_picker );
    Calendar calendar;
    SimpleDateFormat sdf = new SimpleDateFormat( "dd-MM-yyyy", Locale.ENGLISH );
    calendar = new GregorianCalendar( datePicker.getYear( ), datePicker.getMonth( ), datePicker.getDayOfMonth( ) );
    tv_arrival.setText( sdf.format( calendar.getTime( ) ) );
}
巫英纵
2023-03-14
 Calendar dateSelected = Calendar.getInstance();
  private DatePickerDialog datePickerDialog;
dateEditText.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           setDateTimeField() ;
        }
    });


private void setDateTimeField() {
    Calendar newCalendar = dateSelected;
    datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {

        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
            dateSelected.set(year, monthOfYear, dayOfMonth, 0, 0);
            dateEditText.setText(dateFormatter.format(dateSelected.getTime()));
        }

    }, newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH));
    dateEditText.setText(dateFormatter.format(dateSelected.getTime()));
}

或者您可以点击此链接

Datepicker:单击edittext时如何弹出Datepicker

 类似资料:
  • 询问代码的问题必须证明对所解决问题的理解程度最低。包括尝试的解决方案、为什么不起作用以及预期的结果。另请参见:堆栈溢出问题检查表 我想显示数据选择器弹出窗口。我找到了一些示例,但我没有正确获取它。我有一个按钮,我希望当我单击按钮时,数据选择器对话框应该弹出,设置日期后,日期应该存储在变量中。请提供示例代码或好的链接。

  • 我想显示datepicker弹出窗口。我找到了一些例子,但我没有得到正确的理解。我有一个edittext,我希望当我单击edittext时,datepicker对话框应该弹出,在设置日期后,日期应该以DD/MM/YYYY格式显示在edittext中。请提供给我样本代码或良好的链接。

  • 我正在我的演示应用程序中使用这个datepicker https://www.npmjs.com/package/react-datepicker但是我的datepicker是在我点击输入字段时打开的。当用户点击右侧的按钮和图标而不是点击输入时,我们可以打开日期选择器吗?

  • 下面是一个柱塞http://plnkr.co/edit/2fs6vccixrrc7geuwyr2?p=preview 有没有人可以帮忙告诉你为什么日历按钮不工作?但是,单击calendar文本框就可以显示calendarpopup。 多谢你, 渡轮

  • 在我的APCS课程中,我们正在学习如何编写GUI。我们已经学习了如何制作按钮和将背景色改为绿色、红色、蓝色等。然而,我的老师在这周剩下的时间里不会在这里,我只是好奇如何通过单击按钮使文本出现在框架内,并在再次单击按钮时使文本消失。如果有帮助,下面是代码。我想改变背景颜色为绿色以及显示“绿色”在屏幕上。非常感谢你的帮助! }

  • 我在Python Selenium中出错了。我正在尝试下载所有歌曲与硒,但有一些错误。下面是代码: 下面是错误: 你知道为什么会出错吗?