2017-01-29 3 views
1

Является ли сборщик данных намного сложнее в Android, чем в Windows-телефоне, это простой код в окнах. (A выбора даты и TextBox)Xamarin android and date picker

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 Phone

Если вы просто хотите, чтобы показать DatePicker в Android пару Xml кодов будет достаточно:

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

Если вы хотите иметь эквивалент datePicker1.ValueChanged в android. Затем вам нужно создать новый класс, который реализует DatePicker.IOnDateChangedListener:

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():

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(); 
    } 
}