2017-01-29 25 views
1

Android中的日期選取器比Windows手機複雜得多,Windows中的簡單代碼就是這樣。 (日期選擇器和一個TextBox)Xamarin android和日期選擇器

public MainPage() 
    { 
     InitializeComponent(); 
     this.datePicker1.ValueChanged += new EventHandler<DateTimeValueChangedEventArgs> 
      (datePicker1_ValueChanged); 
     DateTime MyVal = DateTime.Today; 
     textBlock1.Text = MyVal.AddDays(35).ToShortDateString(); 

    } 

    private void datePicker1_ValueChanged(object sender, DateTimeValueChangedEventArgs e) 
    { 
     DateTime date = (DateTime)e.NewDateTime; 
     this.textBlock1.Text = date.AddDays(35).ToShortDateString(); 

    } 

如果使用Xamarin你可以使用C#代碼或者你去使用Java代碼。哪種方法最簡單?

回答

0

是日期選取器在Android的複雜得多比在Windows手機

如果你只是想顯示在Android上DatePicker幾個XML的代碼就足夠了:

<DatePicker 
    android:id="@+id/datePicker" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"/> 

如果你想在android中有相當於datePicker1.ValueChanged。然後,你需要創建一個新的類,它實現DatePicker.IOnDateChangedListener:在DatePicker.init()

public class DatePickerChangeHandler : DatePicker.IOnDateChangedListener 
{ 
    public IntPtr Handle 
    { 
     get 
     { 
      throw new NotImplementedException(); 
     } 
    } 

    public void Dispose() 
    { 
     this.Dispose(); 
    } 

    public void OnDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) 
    { 
     ... 
    } 
} 

然後使用它:

datePicker.Init(2017, 1, 30, new DatePickerChangeHandler()); 

如果使用Xamarin,你可以使用C#代碼或者你去Java代碼

如果您使用Xamarin,C#將成爲您的開發語言。

0

月爲時已晚,但如果有人想在C#xamarin機器人要做到這一點很容易,你可以使用DatePicckerDialog,所以你並不需要一個日期選擇器添加到您的axml,

  DateTime today = DateTime.Today; 
     today = today.AddDays(2); 
     DatePickerDialog dateDialog = new DatePickerDialog(this, OnDateSet, today.Year, today.Month - 1, today.Day); 
     dateDialog.DatePicker.MinDate = today.Milliseconds; 

而且在編輯文本的單擊事件使用,

txtPrefDate.Click += (sender, e) => 
     { 
      dateDialog.Show(); 
     }; 
0

axml:

<EditText 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/date_EditText" /> 

activity.cs

[Activity(Label = "YourApp", MainLauncher = true, Icon = "@drawable/icon")] 
public class MainActivity : Activity, IOnDateSetListener 
{ 
    protected override void OnCreate(Bundle bundle) 
    { 
     base.OnCreate(bundle); 
     SetContentView(Resource.Layout.Main); 

     var dateEditText = FindViewById<EditText>(Resource.Id.date_EditText); 
     dateEditText.Text = DateTime.Now.ToShortDateString(); 
     dateEditText.Click += delegate 
     { 
      OnClickDateEditText(); 
     }; 
    } 

    private void OnClickDateEditText() 
    { 
     var dateTimeNow = DateTime.Now; 
     DatePickerDialog datePicker = new DatePickerDialog(this, this, dateTimeNow.Year, dateTimeNow.Month, dateTimeNow.Day); 
     datePicker.Show(); 
    } 

    public void OnDateSet(DatePicker view, int year, int month, int dayOfMonth) 
    { 
     FindViewById<EditText>(Resource.Id.date_EditText).Text = new DateTime(year, month, dayOfMonth).ToShortDateString(); 
    } 
} 
相關問題