Xamarin-andriod-widgets
Xamarin-Androidウィジェット
日付ピッカー
これは、日付を表示するために使用されるウィジェットです。 この例では、テキストビューに設定された日付を表示する日付ピッカーを作成します。
まず、新しいプロジェクトを作成し、 datePickerExample と呼びます。 Main.axml を開き、 datepicker 、 textview 、および 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>
次に、 Mainactivity.cs に移動します。 最初に、 mainActivity:Activity クラス内にtextviewのプライベートインスタンスを作成します。
インスタンスは、選択した日付またはデフォルトの日付を保存するために使用されます。
private TextView showCurrentDate;
次に、* setContentView()*メソッドの後に次のコードを追加します。
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);
};
上記のコードでは、 FindViewById クラスを使用して main.axml ファイルからdatepicker、textview、およびbuttonを検索することで参照しています。
参照した後、選択した日付を日付ピッカーからテキストビューに渡すボタンクリックイベントを設定します。
次に、デフォルトの現在の日付をテキストビューに表示するための* setCurrentDate()*メソッドを作成します。 次のコードは、その方法を説明しています。
private void setCurrentDate() {
string TodaysDate = string.Format("{0}",
DateTime.Now.ToString("M/d/yyyy").PadLeft(2, '0'));
showCurrentDate.Text = TodaysDate;
}
- DateTime.Now.ToString()*クラスは、今日の時刻を文字列オブジェクトにバインドします。
次に、アプリをビルドして実行します。 それは次の出力を表示する必要があります-
タイムピッカー
タイムピッカーは、ユーザーが時間を選択および設定できるようにするだけでなく、時間を表示するために使用されるウィジェットです。 時刻を表示し、ユーザーが時刻を変更できる基本的なタイムピッカーアプリを作成します。
*main.axml* に移動し、次のコードに示すように、新しいボタン、テキストビュー、およびタイムピッカーを追加します。
<?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>
*MainActivity.cs* に移動して、作成したテキストビューに設定された日付を表示する機能を追加します。
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;
}
}
上記のコードでは、最初に timepicker 、 set time ボタンと FindViewById <> クラスで時間を表示するためのテキストビューを参照しました。 次に、時間を設定するボタンのクリックイベントを作成し、クリックすると時間を人が選択した時間に設定します。 デフォルトでは、現在のシステム時刻が表示されます。
- setCurrentTime()メソッドクラスは、 *txt_showTime テキストビューを初期化して現在の時刻を表示します。
次に、アプリケーションをビルドして実行します。 それは次の出力を表示する必要があります-
スピナー
スピナーは、セットから1つのオプションを選択するために使用されるウィジェットです。 これは、ドロップダウン/コンボボックスに相当します。 まず、新しいプロジェクトを作成し、 Spinner App Tutorial と呼びます。
- layoutフォルダーの下の Main.axml を開き、新しい 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>
- valuesフォルダ*にある Strings.xml ファイルを開き、次のコードを追加して*スピナーアイテム*を作成します。
<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>
次に、 MainActivity.cs を開いて、選択した曜日を表示する機能を追加します。
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();
}
次に、アプリケーションをビルドして実行します。 それは次の出力を表示する必要があります-
上記のコードでは、 main.axml ファイルで作成したスピナーを FindViewById <> クラスを介して参照しました。 次に、 strings.xml クラスの配列項目をバインドするために使用する新しい* arrayAdapter()*を作成しました。
最後に、選択した曜日を表示するために使用するメソッド* SelectedDay()*を作成しました。