Android는 사용자가 시간 또는 날짜를 선택할 수 있는 컨트롤을 제공합니다. 있습니다. 이러한 선택 도구에서는 각 항목을 선택할 수 있는 컨트롤을 제공합니다. 시간 (시, 분, 오전/오후) 또는 날짜 (년, 월, 일)의 일부.
<ph type="x-smartling-placeholder">를 통해 개인정보처리방침을 정의할 수 있습니다. <ph type="x-smartling-placeholder">이러한 선택 도구를 사용하면 사용자가 유효하고 올바르게 형식이 지정되었으며 사용자의 언어로 조정된 시간이나 날짜를 선택할 수 있습니다.
DialogFragment
각 시간 또는 날짜 선택 도구를 호스팅합니다. DialogFragment
는
대화상자 수명 주기를 자동으로 관리하며 선택 도구를 다양한 레이아웃으로 표시할 수 있습니다.
구성(예: 핸드셋의 기본 대화상자 또는
큰 화면에서의 레이아웃입니다.
시간 선택 도구 만들기
표시 방법:
TimePickerDialog
DialogFragment
를 사용하여 확장되는 프래그먼트 클래스 정의
DialogFragment
및 TimePickerDialog
프래그먼트의
onCreateDialog()
메서드를 사용하여 축소하도록 요청합니다.
시간 선택 도구의 DialogFragment 확장
TimePickerDialog
의 DialogFragment
를 정의하려면 다음 안내를 따르세요.
다음을 수행하세요.
onCreateDialog()
메서드를 정의하여TimePickerDialog
- 구현:
TimePickerDialog.OnTimeSetListener
인터페이스를 호출하여 사용자가 시간을 설정할 때 콜백을 수신합니다.
예를 들면 다음과 같습니다.
Kotlin
class TimePickerFragment : DialogFragment(), TimePickerDialog.OnTimeSetListener { override fun onCreateDialog(savedInstanceState: Bundle): Dialog { // Use the current time as the default values for the picker. val c = Calendar.getInstance() val hour = c.get(Calendar.HOUR_OF_DAY) val minute = c.get(Calendar.MINUTE) // Create a new instance of TimePickerDialog and return it. return TimePickerDialog(activity, this, hour, minute, DateFormat.is24HourFormat(activity)) } override fun onTimeSet(view: TimePicker, hourOfDay: Int, minute: Int) { // Do something with the time the user picks. } }
자바
public static class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // Use the current time as the default values for the picker. final Calendar c = Calendar.getInstance(); int hour = c.get(Calendar.HOUR_OF_DAY); int minute = c.get(Calendar.MINUTE); // Create a new instance of TimePickerDialog and return it. return new TimePickerDialog(getActivity(), this, hour, minute, DateFormat.is24HourFormat(getActivity())); } public void onTimeSet(TimePicker view, int hourOfDay, int minute) { // Do something with the time the user picks. } }
다음에 관한 자세한 내용은 TimePickerDialog
클래스를 참고하세요.
생성자 인수로 전달합니다.
이제 이 프래그먼트의 인스턴스를 있습니다.
시간 선택 도구 표시
위의 예와 같이 DialogFragment
를 정의한 후
예를 들어 시간 선택도구를 표시하려면
DialogFragment
를 호출하고
show()
메서드를 사용하여 축소하도록 요청합니다.
예를 들어, 다음은 버튼을 탭하면 대화상자:
<Button android:id="@+id/pickTime" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Pick time" />
사용자가 이 버튼을 탭하면 시스템은 다음 메서드를 호출합니다.
Kotlin
findViewById<Button>(R.id.pickTime).setOnClickListener { TimePickerFragment().show(supportFragmentManager, "timePicker") }
자바
findViewById<Button>(R.id.pickTime).setOnClickListener { TimePickerFragment().show(supportFragmentManager, "timePicker"); }
이 메서드는 새 인스턴스에서 show()
을 호출합니다.
이전 예시에 정의된 DialogFragment
입니다. 이
show()
메서드에는
FragmentManager
고유한 태그 이름을 지정해야 합니다.
날짜 선택 도구 만들기
생성
DatePickerDialog
TimePickerDialog
를 만드는 것과 같습니다. 차이점은 대화의
사용할 수 있습니다.
DialogFragment
를 사용하여 DatePickerDialog
를 표시하려면 다음 안내를 따르세요.
DialogFragment
를 확장하고
프래그먼트의 onCreateDialog()
에서 가져온 DatePickerDialog
메서드를 사용하여 축소하도록 요청합니다.
날짜 선택 도구의 DialogFragment 확장
DatePickerDialog
의 DialogFragment
를 정의하려면 다음 안내를 따르세요.
다음을 수행하세요.
onCreateDialog()
메서드를 정의하여DatePickerDialog
- 구현:
DatePickerDialog.OnDateSetListener
인터페이스를 사용하여 사용자가 날짜를 설정할 때 콜백을 수신합니다.
예를 들면 다음과 같습니다.
Kotlin
class DatePickerFragment : DialogFragment(), DatePickerDialog.OnDateSetListener { override fun onCreateDialog(savedInstanceState: Bundle): Dialog { // Use the current date as the default date in the picker. val c = Calendar.getInstance() val year = c.get(Calendar.YEAR) val month = c.get(Calendar.MONTH) val day = c.get(Calendar.DAY_OF_MONTH) // Create a new instance of DatePickerDialog and return it. return DatePickerDialog(requireContext(), this, year, month, day) } override fun onDateSet(view: DatePicker, year: Int, month: Int, day: Int) { // Do something with the date the user picks. } }
자바
public static class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // Use the current date as the default date in the picker. final Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH); int day = c.get(Calendar.DAY_OF_MONTH); // Create a new instance of DatePickerDialog and return it. return new DatePickerDialog(requireContext(), this, year, month, day); } public void onDateSet(DatePicker view, int year, int month, int day) { // Do something with the date the user picks. } }
자세한 내용은
DatePickerDialog
클래스를 참조하세요.
이 프래그먼트의 인스턴스를 있습니다.
날짜 선택 도구 표시
앞의 예와 같이 DialogFragment
를 정의한 후에는
날짜 선택 도구를 표시할 수 있습니다.
DialogFragment
및 show()
호출
예를 들어, 다음은 버튼을 탭하면 대화상자:
<Button android:id="@+id/pickDate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Pick date"/>
사용자가 이 버튼을 탭하면 시스템은 다음 메서드를 호출합니다.
Kotlin
findViewById<Button>(R.id.pickDate).setOnClickListener { val newFragment = DatePickerFragment() newFragment.show(supportFragmentManager, "datePicker") }
자바
findViewById<Button>(R.id.pickDate).setOnClickListener { val newFragment = DatePickerFragment(); newFragment.show(supportFragmentManager, "datePicker"); }
이 메서드는 새 인스턴스에서 show()
을 호출합니다.
이전 예시에 정의된 DialogFragment
입니다. 이
show()
메서드에 FragmentManager
인스턴스가 필요합니다.
고유한 태그 이름을 지정해야 합니다.
자동 완성으로 선택 도구 사용
2017년 Android는 자동 완성 프레임워크를 통해 사용자가 여러 앱에서 양식을 작성하는 데 사용할 수 있는 데이터를 저장합니다. 선택 도구 자동 완성 시나리오에서 유용하게 사용할 수 있습니다. 날짜 또는 시간 데이터를 저장하는 필드의 값입니다. 예를 들어 신용카드나 양식에서 날짜 선택 도구를 사용하면 신용카드.
선택 도구는 대화상자이므로 다른 필드와 함께 활동에 표시되지 않습니다. 선택 도구가 표시되지 않을 때 선택 도구 데이터를 표시하려면 다음 단계를 따르세요.
다른 뷰 사용(예:
EditText
,
선택 도구가 표시되지 않을 때 값을 표시할 수 있습니다.
EditText
객체는 기본적으로 유형의 자동 완성 데이터를 예상합니다.
AUTOFILL_TYPE_TEXT
반면에 자동 완성 서비스는
AUTOFILL_TYPE_DATE
그 표현을 적절히 표현할 수 있습니다 인코더-디코더 아키텍처를
맞춤 보기를 만드는 것이 좋습니다.
EditText
하고 올바르게 처리하는 데 필요한 메서드를 구현합니다.
AUTOFILL_TYPE_DATE
유형의 값입니다.
다음 단계에 따라 EditText
의 서브클래스를 만듭니다.
AUTOFILL_TYPE_DATE
유형의 값을 처리할 수 있습니다.
EditText
에서 상속받는 클래스를 만듭니다.- 구현:
getAutofillType()
메서드를 호출하여AUTOFILL_TYPE_DATE
를 반환합니다. - 구현:
getAutofillValue()
메서드를 호출하여AutofillValue
밀리초 단위로 날짜를 나타내는 객체입니다. 반품 생성 객체에서forDate()
메서드를 사용하여AutofillValue
객체를 생성합니다. - 구현:
autofill()
메서드를 사용하여 축소하도록 요청합니다. 이 메서드는AutofillValue
매개변수 - 유형AUTOFILL_TYPE_DATE
매개변수를 처리하려면 적절한 문자열 표현입니다(예:mm/yyyy
). 문자열 사용 표현을 사용하여 뷰의text
속성을 설정합니다. - 사용자가
EditText
의 맞춤 서브클래스에서 날짜를 수정하려고 할 때 선택 도구를 표시하는 기능을 구현합니다. 뷰가 업데이트됩니다. 값의 문자열 표현이 있는text
속성 입력됩니다.
다음을 처리하는 EditText
서브클래스의 예
AUTOFILL_TYPE_DATE
값의 경우 자동 완성 프레임워크 샘플을 참고하세요.
자바
또는
Kotlin을 사용합니다.
맞춤 뷰의 자동 완성 지원에 관한 자세한 내용은 다음을 참고하세요. 자동 완성 프레임워크.