当前位置: 代码迷 >> Android >> 使用C# + Xamarin开发Android 应用 - Datetime Picker
  详细解决方案

使用C# + Xamarin开发Android 应用 - Datetime Picker

热度:720   发布时间:2016-04-28 00:40:51.0
使用C# + Xamarin开发Android 应用 -- Datetime Picker

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>



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 '{0}' 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, '0'));            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;        }    }



  相关解决方案