Xamarin - Android Widgets
Date Picker
To jest widget służący do wyświetlania daty. W tym przykładzie utworzymy selektor dat, który wyświetla ustawioną datę w widoku tekstowym.
Przede wszystkim utwórz nowy projekt i nazwij go datePickerExample. otwartyMain.axml i utwórz plik datepicker, textviewi a button.
<?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">
<DatePicker
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:id = "@+id/datePicker1" />
<TextView
android:text = "Current Date"
android:textAppearance = "?android:attr/textAppearanceLarge"
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:id = "@+id/txtShowDate" />
<Button
android:text = "Select Date"
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:id = "@+id/btnSetDate" />
</LinearLayout>
Następnie przejdź do Mainactivity.cs. Najpierw tworzymy prywatną instancję widoku tekstowego wewnątrzmainActivity:Activity klasa.
Instancja będzie używana do przechowywania wybranej daty lub daty domyślnej.
private TextView showCurrentDate;
Następnie dodaj następujący kod po setContentView() metoda.
DatePicker pickDate = FindViewById<DatePicker>(Resource.Id.datePicker1);
showCurrentDate = FindViewById<TextView>(Resource.Id.txtShowDate);
setCurrentDate();
Button button = FindViewById<Button>(Resource.Id.btnSetDate);
button.Click += delegate {
showCurrentDate.Text = String.Format("{0}/{1}/{2}",
pickDate.Month, pickDate.DayOfMonth, pickDate.Year);
};
W powyższym kodzie odwołaliśmy się do naszego datepicker, textview i button, znajdując je w naszym main.axml plik przy użyciu FindViewById klasa.
Po odwołaniu ustawiamy zdarzenie kliknięcia przycisku, które odpowiada za przekazanie wybranej daty z selektora dat do widoku tekstu.
Następnie tworzymy plik setCurrentDate()metoda wyświetlania domyślnej bieżącej daty w naszym widoku tekstowym. Poniższy kod wyjaśnia, jak to się robi.
private void setCurrentDate() {
string TodaysDate = string.Format("{0}",
DateTime.Now.ToString("M/d/yyyy").PadLeft(2, '0'));
showCurrentDate.Text = TodaysDate;
}
DateTime.Now.ToString() class wiąże dzisiejszy czas z obiektem typu string.
Teraz skompiluj i uruchom aplikację. Powinien wyświetlić następujący wynik -
Wybór czasu
Time Picker to widżet służący do wyświetlania czasu, a także umożliwiający użytkownikowi wybranie i ustawienie czasu. Zamierzamy stworzyć podstawową aplikację do wybierania czasu, która wyświetla czas, a także umożliwia użytkownikowi zmianę czasu.
Iść do main.axml i dodaj nowy przycisk, widok tekstu i selektor czasu, jak pokazano w poniższym kodzie.
<?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
android:orientation = "vertical"
android:background = "#d3d3d3"
android:layout_width = "fill_parent"
android:layout_height = "fill_parent">
<TimePicker
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:id = "@+id/timePicker1" />
<TextView
android:text = "Time"
android:textAppearance = "?android:attr/textAppearanceLarge"
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:id = "@+id/txt_showTime"
android:textColor = "@android:color/black" />
<Button
android:text = "Set Time"
android:layout_width = "200dp"
android:layout_height = "wrap_content"
android:id = "@+id/btnSetTime"
android:textColor = "@android:color/black"
android:background = "@android:color/holo_green_dark" />
</LinearLayout>
Iść do MainActivity.cs aby dodać funkcję wyświetlania ustawionej daty w utworzonym przez nas widoku tekstowym.
public class MainActivity : Activity {
private TextView showCurrentTime;
protected override void OnCreate(Bundle bundle) {
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
TimePicker Tpicker = FindViewById<TimePicker>(Resource.Id.timePicker1);
showCurrentTime = FindViewById<TextView>(Resource.Id.txt_showTime);
setCurrentTime();
Button button = FindViewById<Button>(Resource.Id.btnSetTime);
button.Click += delegate {
showCurrentTime.Text = String.Format("{0}:{1}",
Tpicker.CurrentHour, Tpicker.CurrentMinute);
};
}
private void setCurrentTime() {
string time = string.Format("{0}",
DateTime.Now.ToString("HH:mm").PadLeft(2, '0'));
showCurrentTime.Text = time;
}
}
W powyższym kodzie najpierw odwołaliśmy się do timepicker,set time przycisk i widok tekstu pokazujący czas przez FindViewById<>klasa. Następnie utworzyliśmy zdarzenie kliknięcia dla przycisku ustawiania czasu, które po kliknięciu ustawia czas na czas wybrany przez osobę. Domyślnie pokazuje aktualny czas systemowy.
Plik setCurrentTime() klasa metody inicjuje txt_showTime Textview, aby wyświetlić aktualny czas.
Teraz skompiluj i uruchom swoją aplikację. Powinien wyświetlić następujący wynik -
Prządka
Spinner to widget służący do wyboru jednej opcji z zestawu. Jest to odpowiednik listy rozwijanej / pola Combo. Przede wszystkim utwórz nowy projekt i nazwij goSpinner App Tutorial.
otwarty Main.axml pod layout folder i utwórz nowy spinner.
<?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">
<Spinner
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:id = "@+id/spinner1"
android:prompt = "@string/daysOfWeek" />
</LinearLayout>
otwarty Strings.xml plik znajdujący się pod values folder i dodaj następujący kod, aby utworzyć plik spinner items.
<resources>
<string name = "daysOfWeek">Choose a planet</string>
<string-array name = "days_array">
<item>Sunday</item>
<item>Monday</item>
<item>Tuesday</item>
<item>Wednesday</item>
<item>Thursday</item>
<item>Friday</item>
<item>Saturday</item>
<item>Sunday</item>
</string-array>
</resources>
Następnie otwórz MainActivity.cs aby dodać funkcjonalność wyświetlania wybranego dnia tygodnia.
protected override void OnCreate(Bundle bundle) {
base.OnCreate(bundle);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
Spinner spinnerDays = FindViewById<Spinner>(Resource.Id.spinner1);
spinnerDays.ItemSelected += new EventHandler
<AdapterView.ItemSelectedEventArgs>(SelectedDay);
var adapter = ArrayAdapter.CreateFromResource(this,
Resource.Array.days_array, Android.Resource.Layout.SimpleSpinnerItem);
adapter.SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropD ownItem);
spinnerDays.Adapter = adapter;
}
private void SelectedDay(object sender, AdapterView.ItemSelectedEventArgs e) {
Spinner spinner = (Spinner)sender;
string toast = string.Format("The selected
day is {0}", spinner.GetItemAtPosition(e.Position));
Toast.MakeText(this, toast, ToastLength.Long).Show();
}
Teraz skompiluj i uruchom aplikację. Powinien wyświetlić następujący wynik -
W powyższym kodzie odwołaliśmy się do tarczy, którą stworzyliśmy w naszym main.axml plik za pośrednictwem FindViewById<>klasa. Następnie stworzyliśmy nowyarrayAdapter() którego używaliśmy do wiązania naszych elementów tablicy z strings.xml klasa.
Wreszcie stworzyliśmy metodę SelectedDay() którego używaliśmy do wyświetlania wybranego dnia tygodnia.