Android, kullanıcının uygun bir saat veya tarih seçmesini sağlayan kontroller sağlar kullanıma hazır iletişim kutuları var. Bu seçiciler, her bir görevi seçmek için kullanabileceğiniz kontroller sağlar belirli bir kısmı zamanın bir kısmını (saat, dakika, ÖÖ/ÖS) veya tarih (ay, gün, yıl) olarak da gösterebilir.
ziyaret edin.Bu seçicileri kullanmak, kullanıcılarınızın geçerli, doğru biçimlendirilmiş ve kullanıcının yerel ayarına göre ayarlanmış olmalıdır.
Önerilerimiz:
DialogFragment
.
her saat veya tarih seçiciyi
düzenleyeceksiniz. DialogFragment
,
iletişim kutusu yaşam döngüsünü destekler ve seçicileri farklı bir düzende görüntülemenizi sağlar
iletişim kutuları gibi yapılandırma yöntemlerini
büyük ekranlardaki düzeni.
Zaman seçici oluştur
Bir
TimePickerDialog
.
DialogFragment
kullanarak,
DialogFragment
ve şuradan bir TimePickerDialog
döndür:
parçanın
onCreateDialog()
yöntemidir.
DialogFragment'ı zaman seçici için genişletme
TimePickerDialog
için bir DialogFragment
tanımlamak üzere,
şunları yapın:
- Bir örneği döndürmek için
onCreateDialog()
yöntemini tanımlayınTimePickerDialog
. - Şunu uygulayın:
TimePickerDialog.OnTimeSetListener
. kullanıcı zamanı ayarladığında geri çağırmayı alacak şekilde arayüze sahiptir.
Aşağıda bununla ilgili bir örnek verilmiştir:
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. } }
Java
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. } }
Şu konu hakkında bilgi için TimePickerDialog
sınıfına bakın:
kurucu bağımsız değişkenleridir.
Şimdi tek yapmanız gereken, bu parçanın bir örneğini etkinliği'ne dokunun.
Saat seçiciyi göster
Öncekine benzer bir DialogFragment
tanımladıktan sonra
zaman seçiciyi görüntüleyebilir ve
DialogFragment
ve
show()
yöntemidir.
Örneğin, dokunulduğunda iletişim kutusu:
<Button android:id="@+id/pickTime" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Pick time" />
Kullanıcı bu düğmeye dokunduğunda sistem aşağıdaki yöntemi çağırır:
Kotlin
findViewById<Button>(R.id.pickTime).setOnClickListener { TimePickerFragment().show(supportFragmentManager, "timePicker") }
Java
findViewById<Button>(R.id.pickTime).setOnClickListener { TimePickerFragment().show(supportFragmentManager, "timePicker"); }
Bu yöntemshow()
DialogFragment
önceki örnekte tanımlanmıştır. İlgili içeriği oluşturmak için kullanılan
show()
yöntemi için bir örnek gerekir:
FragmentManager
ve parça için benzersiz bir etiket adı ekleyin.
Tarih seçici oluşturun
Oluşturuluyor
DatePickerDialog
.
TimePickerDialog
oluşturmaya benzer. Aralarındaki fark iletişim kutusudur.
oluşturduğunuz bir öğedir.
DialogFragment
kullanarak bir DatePickerDialog
görüntülemek için:
DialogFragment
öğesini genişleten bir parça sınıfı tanımlayın ve
Parçanın onCreateDialog()
konumundan DatePickerDialog
yöntemidir.
DialogFragment'ı tarih seçici için genişletme
DatePickerDialog
için bir DialogFragment
tanımlamak üzere,
şunları yapın:
- Bir örneği döndürmek için
onCreateDialog()
yöntemini tanımlayınDatePickerDialog
. - Şunu uygulayın:
DatePickerDialog.OnDateSetListener
. kullanıcı tarihi ayarladığında geri çağırmayı alır.
Aşağıda bununla ilgili bir örnek verilmiştir:
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. } }
Java
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. } }
Bkz.
DatePickerDialog
.
sınıfını kullanır.
Yalnızca bu parçanın bir örneğini etkinliği'ne dokunun.
Tarih seçiciyi göster
Önceki örnekte olduğu gibi bir DialogFragment
tanımladıktan sonra,
DialogFragment
ve show()
aranıyor.
Örneğin, dokunulduğunda iletişim kutusu:
<Button android:id="@+id/pickDate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Pick date"/>
Kullanıcı bu düğmeye dokunduğunda sistem aşağıdaki yöntemi çağırır:
Kotlin
findViewById<Button>(R.id.pickDate).setOnClickListener { val newFragment = DatePickerFragment() newFragment.show(supportFragmentManager, "datePicker") }
Java
findViewById<Button>(R.id.pickDate).setOnClickListener { val newFragment = DatePickerFragment(); newFragment.show(supportFragmentManager, "datePicker"); }
Bu yöntemshow()
DialogFragment
önceki örnekte tanımlanmıştır. İlgili içeriği oluşturmak için kullanılan
show()
yöntemi için FragmentManager
örneği gerekir
ve parça için benzersiz bir etiket adı ekleyin.
Otomatik doldurma özelliğiyle seçicileri kullanma
Android, 2017'de Otomatik doldurma çerçevesi Kullanıcılar, farklı uygulamalarda form doldurmak için kullanılabilecek veriler kaydediyor. Seçiciler kullanıcıların değişiklik yapmalarına izin veren bir kullanıcı arayüzü sağlayarak otomatik doldurma senaryolarında değeri için bir değer girin. Örneğin, bir kredi kartında bir tarih seçici, kullanıcıların kullandıkları kredi kartı bilgilerini kullanabilirsiniz.
Seçiciler iletişim kutuları olduğundan, etkinliklerde
diğer alanları kullanabilirsiniz. Seçici görünmediğinde seçici verilerini görüntülemek için şunları yapabilirsiniz:
Örneğin bir
EditText
,
Bu sütun, seçici görünür olmadığında değeri gösterebilir.
EditText
nesnesi, yerel olarak bu türdeki otomatik doldurma verilerini bekliyor
AUTOFILL_TYPE_TEXT
.
Bunun aksine otomatik doldurma hizmetleri, verileri
AUTOFILL_TYPE_DATE
.
uygun bir temsilini oluşturmayı gerektirir. arasındaki tutarsızlığı
alan adını içeren özel bir görünüm oluşturmanızı öneririz.
EditText
ve doğru kullanımı için gereken yöntemleri uygular.
değerleri için de geçerlidir.AUTOFILL_TYPE_DATE
Şu adımları uygulayarak EditText
alt sınıfı oluşturun:
şu AUTOFILL_TYPE_DATE
türündeki değerleri işleyebilir:
EditText
öğesinden devralan bir sınıf oluşturun.- Şunu uygulayın:
getAutofillType()
. yöntemidir. Bu yöntemAUTOFILL_TYPE_DATE
değerini döndürür. - Şunu uygulayın:
getAutofillValue()
. yöntemidir. Bu yöntem,AutofillValue
milisaniye cinsinden tarihi temsil eden nesne. İadeyi oluşturmak için öğesini kullanmak içinforDate()
. yöntemini kullanarakAutofillValue
nesnesini oluşturabilirsiniz. - Şunu uygulayın:
autofill()
. yöntemidir. Bu yöntem,AutofillValue
parametresi,AUTOFILL_TYPE_DATE
. Parametreyi işlemek için dize temsilidir (örneğin,mm/yyyy
). Dizeyi kullanın görünümününtext
özelliğini ayarlamak için kullanın. - Kullanıcı düzenleme yapmak istediğinde seçici görüntüleyen bir işlev uygulayın.
EditText
özel alt sınıfındaki tarih. Görünüm güncellenir değerin dize gösterimiyletext
özelliği kullanıcının seçme aracında seçtiği bir öğedir.
Örneğin, şunları işleyen bir EditText
alt sınıfı örneği:
AUTOFILL_TYPE_DATE
değerleri için Otomatik Doldurma Çerçevesi örneğini inceleyin:
Java
veya
Kotlin.
Özel görünümleriniz için otomatik doldurma desteğini kanıtlama hakkında daha fazla bilgi edinmek üzere şu makaleyi inceleyin: Otomatik doldurma çerçevesi.