Developing Android applications using C# + Xamarin -- Datetime Picker

黄舟
Release: 2017-03-01 10:32:08
Original
1530 people have browsed it

1. axml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:minWidth="25px"
    android:minHeight="25px">
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/linearLayout4">
        <TextView
            android:text="Service Name"
            android:layout_width="400px"
            android:layout_height="match_parent"
            android:id="@+id/lblBdServiceName" />
    </LinearLayout>
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/linearLayout1">
        <Button
            android:text="Select Date"
            android:id="@+id/btnBDChooseDate"
            android:layout_width="154.5dp"
            android:layout_height="match_parent" />
        <TextView
            android:text=""
            android:layout_width="400px"
            android:layout_height="match_parent"
            android:id="@+id/lblBDDate" />
    </LinearLayout>
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/linearLayout2">
        <Button
            android:text="Select Time"
            android:id="@+id/btnBDChooseTime"
            android:layout_width="154.5dp"
            android:layout_height="match_parent" />
        <TextView
            android:text=""
            android:layout_width="400px"
            android:layout_height="match_parent"
            android:id="@+id/lblBDTime" />
    </LinearLayout>
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/linearLayout3">
        <TextView
            android:layout_width="154.5dp"
            android:layout_height="match_parent"
            android:id="@+id/lblEmpty" />
        <Button
            android:text="Confirm"
            android:id="@+id/btnBDConfirm"
            android:layout_width="154.5dp"
            android:layout_height="match_parent"
            android:layout_marginRight="320.8dp" />
    </LinearLayout>
</LinearLayout>
Copy after login

2. Activity.cs

public class BookingDetails : Activity
    {

        private TextView timeDisplay;
        private Button pickTime;
        private int hour;
        private int minute;
        const int TIME_DIALOG_ID = 0;



        private TextView dateDisplay;
        private Button pickDate;
        private DateTime date;
        const int DATE_DIALOG_ID = 1;

        private DateTime serverDateTime ;

        protected override void OnCreate(Bundle bundle)
        {
            SetContentView(Resource.Layout.BookingDetails);
            base.OnCreate(bundle);

            try
            {
                var lblServiceName = FindViewById<TextView>(Resource.Id.lblBdServiceName);
                lblServiceName.SetText("Service 1", TextView.BufferType.Normal);

                serverDateTime = DateTime.Parse("2015-5-22 15:30:26");
                // Create your application here

                timeDisplay = FindViewById<TextView>(Resource.Id.lblBDTime);
                pickTime = FindViewById<Button>(Resource.Id.btnBDChooseTime);

                // Add a click listener to the button
                pickTime.Click += (o, e) => ShowDialog(TIME_DIALOG_ID);

                hour = serverDateTime.Hour;
                minute = serverDateTime.Minute;
                UpdateDisplayTime();



                // capture our View elements
                dateDisplay = FindViewById<TextView>(Resource.Id.lblBDDate);
                pickDate = FindViewById<Button>(Resource.Id.btnBDChooseDate);

                // add a click event handler to the button
                pickDate.Click += delegate { ShowDialog(DATE_DIALOG_ID); };

                date = serverDateTime;
                UpdateDisplayDate();


                var btnCfm = FindViewById<Button>(Resource.Id.btnBDConfirm);
                btnCfm.Click += (sender, args) =>
                {
                    try
                    {
                        var serviceName = FindViewById<TextView>(Resource.Id.lblBdServiceName).Text;
                        var selectDate = FindViewById<TextView>(Resource.Id.lblBDDate).Text;
                        var selectTime = FindViewById<TextView>(Resource.Id.lblBDTime).Text;

                        var selectedDateTime =
                           DateTime.Parse(string.Format("{0} {1}", selectDate, selectTime)).ToString();
                        var msg = string.Format("Confirm booking service &#39;{0}&#39; at {1} ?", serviceName, selectedDateTime);
                        this.ShowDlgYesNo(msg, "Booking Confirmation",
                            (s, arg) =>
                            {
                                this.ShowAlert("call api book");
                                this.GotoActicity<MainActivity>();
                            },
                            (s, arg) =>
                            {
                                // do nothing 
                            });
                    }
                    catch (Exception ex)
                    {
                        this.ShowAlert(ex.Message);
                    }

                    
                };
            }
            catch (Exception ex)
            {
                this.ShowAlert(ex.Message);
            }
           
        }

        private void UpdateDisplayTime()
        {
            string time = string.Format("{0}:{1}", hour, minute.ToString().PadLeft(2, &#39;0&#39;));
            timeDisplay.Text = time;

        }

        private void UpdateDisplayDate()
        {
            dateDisplay.Text = date.ToString("d");
        }

        private void TimePickerCallback(object sender, TimePickerDialog.TimeSetEventArgs e)
        {
            hour = e.HourOfDay;
            minute = e.Minute;
            UpdateDisplayTime();
        }

        void OnDateSet(object sender, DatePickerDialog.DateSetEventArgs e)
        {
            this.date = e.Date;
            UpdateDisplayDate();
        }

        protected override Dialog OnCreateDialog(int id)
        {
            if (id == TIME_DIALOG_ID)
            {
                return new TimePickerDialog(this, TimePickerCallback, hour, minute, false);
            }
            if (id == DATE_DIALOG_ID)
            {
                var dlg = new DatePickerDialog(this, OnDateSet, serverDateTime.Year, serverDateTime.Month-1, serverDateTime.Day);
                return dlg;
            }

            return null;
        }
    }
Copy after login

The above is the content of using C# + Xamarin to develop Android application-Datetime Picker. For more related content, please pay attention to the PHP Chinese website (www.php.cn)!


Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template