Android-datepicker-control

提供:Dev Guides
移動先:案内検索

Android-日付ピッカー

'_Androidの日付ピッカーを使用すると、カスタムユーザーインターフェイスで日、月、年で構成される日付を選択できます。 この機能のために、AndroidはDatePickerおよびDatePickerDialogコンポーネントを提供します。_

このチュートリアルでは、DatePickerDialogを使用して日付ピッカーを使用する方法を示します。 DatePickerDialogは、DatePickerを含むシンプルなダイアログです。

DatePickerDialogを表示するには、DatePickerDialog idを_showDialog(id_of_dialog)_メソッドに渡す必要があります。 その構文は以下のとおりです-

showDialog(999);

この_showDialog_メソッドを呼び出すと、_onCreateDialog_という別のメソッドが自動的に呼び出されます。 そのため、このメソッドもオーバーライドする必要があります。 その構文は以下のとおりです-

@Override
protected Dialog onCreateDialog(int id) {
  //TODO Auto-generated method stub
   if (id == 999) {
      return new DatePickerDialog(this, myDateListener, year, month, day);
   }
   return null;
}

最後の手順では、DatePickerDialogリスナーを登録し、そのonDateSetメソッドをオーバーライドする必要があります。 このonDateSetメソッドには、更新された日、月、年が含まれます。 その構文は以下のとおりです-

private DatePickerDialog.OnDateSetListener myDateListener = new DatePickerDialog.OnDateSetListener() {
   @Override
   public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) {
     //arg1 = year
     //arg2 = month
     //arg3 = day
   }
};

日付の設定

日付属性とは別に、DatePickerオブジェクトもこの関数に渡されます。 DatePickerの以下のメソッドを使用して、さらに操作を実行できます。

Sr.No Method & description
1

getDayOfMonth()

このメソッドは、選択した月の日を取得します

2

getMonth()

このメソッドは、選択された月を取得します

3

getYear()

このメソッドは、選択された年を取得します

4

setMaxDate(long maxDate)

このメソッドは、このDatePickerがサポートする最大日付を1970年1月1日00:00:00からgetDefault()タイムゾーンでミリ秒単位で設定します

5

setMinDate(long minDate)

このメソッドは、このNumberPickerがサポートする最小日付を1970年1月1日00:00:00からgetDefault()タイムゾーンでミリ秒単位で設定します

6

setSpinnersShown(boolean shown)

このメソッドは、スピナーを表示するかどうかを設定します

7

updateDate(int year, int month, int dayOfMonth)

このメソッドは現在の日付を更新します

8

getCalendarView()

このメソッドはカレンダービューを返します

9

getFirstDayOfWeek()

このメソッドは、週の最初の曜日を返します

DatePickerDialogクラスの使用方法を示す例を次に示します。 DatePickerウィジェットを使用して日付を設定できる基本的な日付ピッカーアプリケーションを作成します

この例を試すには、実際のデバイスまたはエミュレーターでこれを実行できます。

Steps Description
1 You will use Android studio to create an Android application and name it as DatePicker under a package com.example.datepicker.
2 Modify src/MainActivity.java file to add necessary code.
3 Modify the res/layout/activity_main to add respective XML components.
4 Modify the res/values/string.xml to add necessary string components.
5 Run the application and choose a running android device and install the application on it and verify the results.

以下は、変更されたメインアクティビティファイル src/com.example.datepicker/MainActivity.java の内容です。

package com.example.datepicker;

import java.util.Calendar;

import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;

import android.os.Bundle;

import android.view.Menu;
import android.view.View;

import android.widget.DatePicker;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
   private DatePicker datePicker;
   private Calendar calendar;
   private TextView dateView;
   private int year, month, day;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      dateView = (TextView) findViewById(R.id.textView3);
      calendar = Calendar.getInstance();
      year = calendar.get(Calendar.YEAR);

      month = calendar.get(Calendar.MONTH);
      day = calendar.get(Calendar.DAY_OF_MONTH);
      showDate(year, month+1, day);
   }

   @SuppressWarnings("deprecation")
   public void setDate(View view) {
      showDialog(999);
      Toast.makeText(getApplicationContext(), "ca",
         Toast.LENGTH_SHORT)
      .show();
   }

   @Override
   protected Dialog onCreateDialog(int id) {
     //TODO Auto-generated method stub
      if (id == 999) {
         return new DatePickerDialog(this,
            myDateListener, year, month, day);
      }
      return null;
   }

   private DatePickerDialog.OnDateSetListener myDateListener = new
      DatePickerDialog.OnDateSetListener() {
      @Override
      public void onDateSet(DatePicker arg0,
         int arg1, int arg2, int arg3) {
        //TODO Auto-generated method stub
        //arg1 = year
        //arg2 = month
        //arg3 = day
         showDate(arg1, arg2+1, arg3);
      }
   };

   private void showDate(int year, int month, int day) {
      dateView.setText(new StringBuilder().append(day).append("/")
      .append(month).append("/").append(year));
   }
}

以下は、xml res/layout/activity_main.xml の変更されたコンテンツです。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:paddingBottom="@dimen/activity_vertical_margin"
   android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   tools:context=".MainActivity" >

   <Button
      android:id="@+id/button1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true"
      android:layout_marginTop="70dp"
      android:onClick="setDate"
      android:text="@string/date_button_set"/>

   <TextView
      android:id="@+id/textView1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true"
      android:layout_marginTop="24dp"
      android:text="@string/date_label_set"
      android:textAppearance="?android:attr/textAppearanceMedium"/>

   <TextView
      android:id="@+id/textView2"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_below="@+id/button1"
      android:layout_marginTop="66dp"
      android:layout_toLeftOf="@+id/button1"
      android:text="@string/date_view_set"
      android:textAppearance="?android:attr/textAppearanceMedium"/>

   <TextView
      android:id="@+id/textView3"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignRight="@+id/button1"
      android:layout_below="@+id/textView2"
      android:layout_marginTop="72dp"
      android:text="@string/date_selected"
      android:textAppearance="?android:attr/textAppearanceMedium"/>

</RelativeLayout>

以下は res/values/string.xml の内容です。

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <string name="app_name">DatePicker</string>
   <string name="action_settings">Settings</string>
   <string name="hello_world">Hello world!</string>
   <string name="date_label_set">Press the button to set the date</string>
   <string name="date_button_set">Set Date</string>
   <string name="date_view_set">The Date is: </string>
   <string name="date_selected"></string>
</resources>

変更したDatePickerアプリケーションを実行してみましょう。 環境のセットアップ中に AVD を作成したと思います。 Eclipseからアプリを実行するには、プロジェクトのアクティビティファイルの1つを開き、ツールバーのRun Eclipse Run Iconアイコンをクリックします。 EclipseがAVDにアプリをインストールして起動し、セットアップとアプリケーションで問題がなければ、次のエミュレータウィンドウが表示されます-

Android日付ピッカーチュートリアル

これで、日付がすでに下のラベルで設定されていることがわかります。 ここで、[日付の設定]ボタンを押して、DatePickerDialogで日付を変更します。 画面に続くボタンを押すと表示されます。

Android日付ピッカーチュートリアル

必要な日付を設定し、日付を設定した後、完了ボタンを押します。 このダイアログは消え、新しく設定された日付が画面に表示され始めます。 これを以下に示します。

Android日付ピッカーチュートリアル