Merged PR 244831: Accessible Date Picker

This PR adds a Date Picker for accessibility that includes month, day and year pickers as well as refactors parts of the DateTimePicker control.
- Added new functionality to `DateTimePicker` to enable picking of dates (month, day, year) in TalkBack mode.
- Refactored function names and enums for more clarity and broader usage.
- Added functionality to automatically switch to accessibility date picker in `DateTimePickerDialog` depending on TalkBack mode
- Removed unused DisplayModes and unused DisplayMode properties
- Updated dialog titles to reflect different representations depending on TalkBack mode
- Modified DateTime Picker demo to reflect different accessibility modes

Accessibility interaction for the whole DateTimePicker control will be implemented in another work item.

**Accessible Date Picker** | **Demo**
-|-
![Screenshot_1552932429.png](https://onedrive.visualstudio.com/4dcbf0bc-c3cd-49c8-a7c3-ec1924691d9b/_apis/git/repositories/32fa6338-45ea-42a0-aca0-484938e1962a/pullRequests/244831/attachments/Screenshot_1552932429.png) | ![Screenshot_1552935346.png](https://onedrive.visualstudio.com/4dcbf0bc-c3cd-49c8-a7c3-ec1924691d9b/_apis/git/repositories/32fa6338-45ea-42a0-aca0-484938e1962a/pullRequests/244831/attachments/Screenshot_1552935346.png)

Related work items: #667471, #702105
This commit is contained in:
William Do 2019-04-03 20:34:06 +00:00
Родитель ffbb198eec
Коммит 0b34e11c72
80 изменённых файлов: 515 добавлений и 199 удалений

Просмотреть файл

@ -6,12 +6,15 @@
package com.microsoft.officeuifabricdemo.demos
import android.os.Bundle
import android.view.View
import android.widget.Button
import com.microsoft.officeuifabric.datetimepicker.DatePickMode
import com.microsoft.officeuifabric.datetimepicker.DateRangeMode
import com.microsoft.officeuifabric.datetimepicker.DateTimePickerDialog
import com.microsoft.officeuifabric.datetimepicker.DateTimePickerDialog.Mode
import com.microsoft.officeuifabric.datetimepicker.OnDateTimePickedListener
import com.microsoft.officeuifabric.util.DateStringUtils
import com.microsoft.officeuifabric.util.accessibilityManager
import com.microsoft.officeuifabric.util.isAccessibilityEnabled
import com.microsoft.officeuifabricdemo.DemoActivity
import com.microsoft.officeuifabricdemo.R
import kotlinx.android.synthetic.main.activity_date_time_picker_dialog.*
@ -37,13 +40,13 @@ class DateTimePickerDialogActivity : DemoActivity(), OnDateTimePickedListener {
private const val DIALOG_TAG = "dialogTag"
}
enum class DatePickerType(val buttonId: Int, val tag: String, val mode: Mode, val datePickMode: DatePickMode) {
DATE(R.id.date_picker_button, TAG_DATE_PICKER, Mode.DATE, DatePickMode.SINGLE),
DATE_TIME(R.id.date_time_picker_date_selected_button, TAG_DATE_TIME_PICKER, Mode.DATE_TIME, DatePickMode.SINGLE),
TIME_DATE(R.id.date_time_picker_time_selected_button, TAG_DATE_TIME_PICKER, Mode.TIME_DATE, DatePickMode.SINGLE),
START_DATE(R.id.date_range_start_button, TAG_START_DATE_PICKER, Mode.DATE, DatePickMode.RANGE_START),
END_DATE(R.id.date_range_end_button, TAG_END_DATE_PICKER, Mode.DATE, DatePickMode.RANGE_END),
START_DATE_TIME(R.id.date_time_range_start_button, TAG_DATE_TIME_RANGE_PICKER, Mode.DATE_TIME, DatePickMode.RANGE_START)
enum class DatePickerType(val buttonId: Int, val tag: String, val mode: Mode, val dateRangeMode: DateRangeMode) {
DATE(R.id.date_picker_button, TAG_DATE_PICKER, Mode.DATE, DateRangeMode.NONE),
DATE_TIME(R.id.date_time_picker_date_selected_button, TAG_DATE_TIME_PICKER, Mode.DATE_TIME, DateRangeMode.NONE),
TIME_DATE(R.id.date_time_picker_time_selected_button, TAG_DATE_TIME_PICKER, Mode.TIME_DATE, DateRangeMode.NONE),
START_DATE(R.id.date_range_start_button, TAG_START_DATE_PICKER, Mode.DATE, DateRangeMode.START),
END_DATE(R.id.date_range_end_button, TAG_END_DATE_PICKER, Mode.DATE, DateRangeMode.END),
START_DATE_TIME(R.id.date_time_range_start_button, TAG_DATE_TIME_RANGE_PICKER, Mode.DATE_TIME, DateRangeMode.START)
}
override val contentLayoutId: Int
@ -55,11 +58,11 @@ class DateTimePickerDialogActivity : DemoActivity(), OnDateTimePickedListener {
private var startDate: ZonedDateTime? = null
private var startDateTime: ZonedDateTime? = null
private var datePickMode: DatePickMode = DatePickMode.SINGLE
private var dateRangeMode: DateRangeMode = DateRangeMode.NONE
private var singleModeDialogTag: String? = null
private var dialogTag: String? = null
set(value) {
if (datePickMode == DatePickMode.SINGLE) {
if (dateRangeMode == DateRangeMode.NONE) {
singleModeDialogTag = value
}
field = value
@ -84,17 +87,24 @@ class DateTimePickerDialogActivity : DemoActivity(), OnDateTimePickedListener {
DatePickerType.values().forEach { picker ->
findViewById<Button>(picker.buttonId).setOnClickListener {
datePickMode = picker.datePickMode
dateRangeMode = picker.dateRangeMode
dialogTag = picker.tag
val dialog = DateTimePickerDialog.newInstance(
this,
getDateTime(),
getDuration(),
picker.mode,
picker.datePickMode
picker.dateRangeMode
)
dialog.show(supportFragmentManager, picker.tag)
}
}
updateButtonsForAccessibility(isAccessibilityEnabled)
accessibilityManager.addAccessibilityStateChangeListener {
updateButtonsForAccessibility(it)
}
}
override fun onSaveInstanceState(outState: Bundle) {
@ -127,6 +137,16 @@ class DateTimePickerDialogActivity : DemoActivity(), OnDateTimePickedListener {
}
}
private fun updateButtonsForAccessibility(accessibilityEnabled: Boolean) {
if (accessibilityEnabled) {
date_time_picker_time_selected_button.visibility = View.GONE
date_time_picker_date_selected_button.setText(R.string.date_time_picker_dialog_date_time_button)
} else {
date_time_picker_time_selected_button.visibility = View.VISIBLE
date_time_picker_date_selected_button.setText(R.string.date_time_picker_dialog_calendar_date_time_button)
}
}
private fun updateDateTimeText() {
val tag = singleModeDialogTag ?: return
val dateTime = dateTime ?: return

Просмотреть файл

@ -18,6 +18,7 @@
<string name="date_time_picker_dialog_date_button">Show date picker</string>
<string name="date_time_picker_dialog_calendar_date_time_button">Show date time picker with date tab selected</string>
<string name="date_time_picker_dialog_date_time_calendar_button">Show date time picker with time tab selected</string>
<string name="date_time_picker_dialog_date_time_button">Show date time picker</string>
<string name="date_time_picker_dialog_date_start_button">Select start date</string>
<string name="date_time_picker_dialog_date_time_range_button">Select date time range</string>
<string name="date_time_picker_dialog_date_end_button">Select end date</string>

Просмотреть файл

@ -32,7 +32,7 @@ internal class DatePickerFragment : Fragment(), OnDateSelectedListener {
private lateinit var date: ZonedDateTime
private lateinit var duration: Duration
private lateinit var datePickMode: DatePickMode
private lateinit var dateRangeMode: DateRangeMode
fun setTimeSlot(timeSlot: TimeSlot) {
date = timeSlot.start
@ -54,7 +54,7 @@ internal class DatePickerFragment : Fragment(), OnDateSelectedListener {
val bundle = savedInstanceState ?: arguments ?: return
date = bundle.getSerializable(DateTimePickerExtras.DATE_TIME) as ZonedDateTime
duration = bundle.getSerializable(DateTimePickerExtras.DURATION) as Duration
datePickMode = bundle.getSerializable(DateTimePickerExtras.DATE_PICK_MODE) as DatePickMode
dateRangeMode = bundle.getSerializable(DateTimePickerExtras.DATE_RANGE_MODE) as DateRangeMode
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
@ -72,19 +72,19 @@ internal class DatePickerFragment : Fragment(), OnDateSelectedListener {
super.onSaveInstanceState(bundle)
bundle.putSerializable(DateTimePickerExtras.DATE_TIME, date)
bundle.putSerializable(DateTimePickerExtras.DURATION, duration)
bundle.putSerializable(DateTimePickerExtras.DATE_PICK_MODE, datePickMode)
bundle.putSerializable(DateTimePickerExtras.DATE_RANGE_MODE, dateRangeMode)
}
override fun onDateSelected(date: ZonedDateTime) {
when (datePickMode) {
DatePickMode.SINGLE -> {
when (dateRangeMode) {
DateRangeMode.NONE -> {
this.date = date
duration = Duration.ZERO
}
DatePickMode.RANGE_START -> {
DateRangeMode.START -> {
this.date = date
}
DatePickMode.RANGE_END -> {
DateRangeMode.END -> {
if (date.isBefore(this.date))
this.date = date.minus(duration)
else
@ -101,6 +101,6 @@ internal class DatePickerFragment : Fragment(), OnDateSelectedListener {
}
private fun updateCalendarSelectedDateRange() {
calendar_view.setSelectedDateRange(date.toLocalDate(), duration, datePickMode == DatePickMode.RANGE_END)
calendar_view.setSelectedDateRange(date.toLocalDate(), duration, dateRangeMode == DateRangeMode.END)
}
}

Просмотреть файл

@ -5,6 +5,6 @@
package com.microsoft.officeuifabric.datetimepicker
enum class DatePickMode {
SINGLE, RANGE_START, RANGE_END
enum class DateRangeMode {
NONE, START, END
}

Просмотреть файл

@ -22,35 +22,46 @@ import kotlinx.android.synthetic.main.view_date_time_picker.view.*
import org.threeten.bp.Duration
import org.threeten.bp.LocalDate
import org.threeten.bp.YearMonth
import org.threeten.bp.ZonedDateTime
import org.threeten.bp.temporal.ChronoUnit
import java.text.DateFormatSymbols
// TODO support date only mode for accessibility
/**
* [DateTimePicker] houses [NumberPicker]s that allow users to pick dates, times and periods(12 hour clocks)
* [DateTimePicker] houses [NumberPicker]s that allow users to pick dates, times and periods (12 hour clocks).
* When [PickerMode.DATE] is the pickerMode months, days and years are shown.
*/
internal class DateTimePicker : LinearLayout, NumberPicker.OnValueChangeListener {
companion object {
private const val MONTH_LIMIT = 1200L
private const val MIN_DAYS = 1
private const val MAX_HOURS_24_CLOCK = 23
private const val MAX_HOURS_12_CLOCK = 12
private const val MIN_HOURS_24_CLOCK = 0
private const val MIN_HOURS_12_CLOCK = 1
private const val MAX_MINUTES = 59
private const val MIN_MINUTES = 0
private const val MIN_MONTHS = 1
private const val MIN_PERIOD = 0
private const val MAX_PERIOD = 1
}
enum class Tab {
START_TIME, END_TIME, NO_DURATION
START, END, NONE
}
enum class PickerMode {
DATE, DATE_TIME
}
val selectedTab: Tab
get() = Tab.values()[start_end_tabs.selectedTabPosition]
var timeSlot: TimeSlot? = null
get() {
val updatedTime = computeTime()
val updatedTime = pickerValue
if (selectedTab == Tab.START_TIME)
if (selectedTab == Tab.START)
dateTime = updatedTime
else
duration = if (updatedTime.isBefore(dateTime)) Duration.ZERO else Duration.between(dateTime, updatedTime)
@ -60,18 +71,33 @@ internal class DateTimePicker : LinearLayout, NumberPicker.OnValueChangeListener
set(value) {
field = value
value?.let {
dateTime = value.start
dateTime = value.start.truncatedTo(ChronoUnit.MINUTES)
duration = value.duration
displayTime(selectedTab == Tab.START_TIME, false)
setPickerValues(selectedTab == Tab.END, false)
}
}
val selectedTab: Tab
get() = Tab.values()[start_end_time_tab.selectedTabPosition]
/**
* Determines whether date and time are shown or just date.
*/
var pickerMode: PickerMode = PickerMode.DATE_TIME
set(value) {
field = value
when (pickerMode) {
PickerMode.DATE -> initDateNumberPickers()
PickerMode.DATE_TIME -> initDateTimeNumberPickers()
}
}
var onDateTimeSelectedListener: OnDateTimeSelectedListener? = null
private var dateTime: ZonedDateTime = ZonedDateTime.now()
private val pickerValue: ZonedDateTime
get() = when (pickerMode) {
PickerMode.DATE -> datePickerValue
PickerMode.DATE_TIME -> dateTimePickerValue
}
private var dateTime: ZonedDateTime = ZonedDateTime.now().truncatedTo(ChronoUnit.MINUTES)
private var duration: Duration = Duration.ZERO
private val is24Hour: Boolean
private var daysBack: Int = 0
@ -80,11 +106,7 @@ internal class DateTimePicker : LinearLayout, NumberPicker.OnValueChangeListener
private val onTabSelectedListener = object : TabLayout.OnTabSelectedListener {
override fun onTabSelected(tab: TabLayout.Tab) {
// Adjust start time and duration when switching tabs
if (tab.tag === Tab.START_TIME) {
displayTime(true, true)
} else {
displayTime(false, true)
}
setPickerValues(tab.tag === Tab.END, true)
}
override fun onTabUnselected(tab: TabLayout.Tab) { }
@ -99,92 +121,89 @@ internal class DateTimePicker : LinearLayout, NumberPicker.OnValueChangeListener
}
/**
* Selects either start or end tab, or in the case of NO_DURATION hides the tabs
* Selects either START or END tab, or in the case of NONE hides the tabs.
*/
fun selectTab(tab: Tab) {
if (tab == Tab.NO_DURATION)
start_end_time_tab.visibility = View.GONE
else
with(start_end_time_tab) {
if (tab == Tab.NONE) {
start_end_tabs.visibility = View.GONE
} else {
with(start_end_tabs) {
removeOnTabSelectedListener(onTabSelectedListener)
getTabAt(tab.ordinal)?.select()
addOnTabSelectedListener(onTabSelectedListener)
visibility = View.VISIBLE
}
}
}
/**
* Sets time depending on start/end mode as well as determines whether animation is to be applied
* to the [NumberPicker]s
* Sets the pickers values
* @param showEndTime is a flag that sets the [NumberPicker]s' end date / time, start date / time or,
* in the case of no duration, a selected date / time.
* @param animate is a flag that sets whether the [NumberPicker]s animate to their set values.
*/
fun displayTime(showStartTime: Boolean, animate: Boolean) {
val time = if (showStartTime) dateTime else dateTime.plus(duration)
val today = LocalDate.now()
val daysBetween = ChronoUnit.DAYS.between(today, time).toInt()
val dateValue = daysBack + daysBetween
val hourValue = if (is24Hour)
time.hour
else if (time.hour == MAX_HOURS_12_CLOCK)
time.hour
else
time.hour % MAX_HOURS_12_CLOCK
val minuteValue = time.minute
val ampmValue = if (time.hour < 12) 0 else 1
if (animate) {
date_picker.quicklyAnimateValueTo(dateValue)
hour_picker.animateValueTo(hourValue)
minute_picker.quicklyAnimateValueTo(minuteValue)
if (!is24Hour)
period_picker.animateValueTo(ampmValue)
} else {
date_picker.value = dateValue
hour_picker.value = hourValue
minute_picker.value = minuteValue
if (!is24Hour)
period_picker.value = ampmValue
fun setPickerValues(showEndTime: Boolean, animate: Boolean) {
when (pickerMode) {
PickerMode.DATE -> setDatePickerValues(showEndTime, animate)
PickerMode.DATE_TIME -> setDateTimePickerValues(showEndTime, animate)
}
}
override fun onFinishInflate() {
super.onFinishInflate()
with(start_end_time_tab) {
addTab(start_end_time_tab.newTab().setText(R.string.date_time_picker_start_time).setTag(Tab.START_TIME))
addTab(start_end_time_tab.newTab().setText(R.string.date_time_picker_end_time).setTag(Tab.END_TIME))
with(start_end_tabs) {
addTab(newTab())
addTab(newTab())
addOnTabSelectedListener(onTabSelectedListener)
tabGravity = TabLayout.GRAVITY_FILL
}
getTab(Tab.START)?.tag = Tab.START
getTab(Tab.END)?.tag = Tab.END
}
override fun onValueChange(picker: NumberPicker, oldVal: Int, newVal: Int) {
if (pickerMode == PickerMode.DATE)
updateDayPicker()
timeSlot?.let { onDateTimeSelectedListener?.onDateTimeSelected(it.start, it.duration) }
}
private fun getTab(tab: Tab): TabLayout.Tab? = start_end_tabs.getTabAt(tab.ordinal)
// Date Time NumberPickers
private val dateTimePickerValue: ZonedDateTime
get() {
val now = ZonedDateTime.now().truncatedTo(ChronoUnit.MINUTES)
val dayDiff = date_picker.value - daysBack
var hour = hour_picker.value
val minute = minute_picker.value
if (!is24Hour) {
val isMorning = period_picker.value == 0
val periodStartHour = if (isMorning) 0 else MAX_HOURS_12_CLOCK
if (hour == MAX_HOURS_12_CLOCK)
hour = periodStartHour
else
hour += periodStartHour
}
return now.plusDays(dayDiff.toLong()).withHour(hour).withMinute(minute)
}
private fun initDateTimeNumberPickers() {
getTab(Tab.START)?.setText(R.string.date_time_picker_start_time)
getTab(Tab.END)?.setText(R.string.date_time_picker_end_time)
date_time_pickers.visibility = View.VISIBLE
initDatePicker()
initHourPicker()
initMinutePicker()
initPeriodPicker()
}
override fun onValueChange(picker: NumberPicker, oldVal: Int, newVal: Int) {
timeSlot?.let { onDateTimeSelectedListener?.onDateTimeSelected(it.start, it.duration) }
}
private fun computeTime(): ZonedDateTime {
val now = ZonedDateTime.now().truncatedTo(ChronoUnit.MINUTES)
val dayDiff = date_picker.value - daysBack
var hour = hour_picker.value
val minute = minute_picker.value
if (!is24Hour) {
val isMorning = period_picker.value == 0
if (hour == MAX_HOURS_12_CLOCK) {
hour = if (isMorning) 0 else MAX_HOURS_12_CLOCK
} else {
hour += if (isMorning) 0 else MAX_HOURS_12_CLOCK
}
}
return now.plusDays(dayDiff.toLong()).withHour(hour).withMinute(minute)
}
private fun initDatePicker() {
val firstDayOfWeek = PreferencesManager.getWeekStart(context)
val today = LocalDate.now()
@ -236,6 +255,96 @@ internal class DateTimePicker : LinearLayout, NumberPicker.OnValueChangeListener
}
}
private fun setDateTimePickerValues(showEndTime: Boolean, animate: Boolean) {
val time = if (showEndTime) dateTime.plus(duration) else dateTime
val today = LocalDate.now()
val daysBetween = ChronoUnit.DAYS.between(today, time).toInt()
val dateValue = daysBack + daysBetween
val hourValue = when {
is24Hour || time.hour == MAX_HOURS_12_CLOCK -> time.hour
else -> time.hour % MAX_HOURS_12_CLOCK
}
val minuteValue = time.minute
val ampmValue = if (time.hour < 12) 0 else 1
if (animate) {
date_picker.quicklyAnimateValueTo(dateValue)
hour_picker.animateValueTo(hourValue)
minute_picker.quicklyAnimateValueTo(minuteValue)
if (!is24Hour)
period_picker.animateValueTo(ampmValue)
} else {
date_picker.value = dateValue
hour_picker.value = hourValue
minute_picker.value = minuteValue
if (!is24Hour)
period_picker.value = ampmValue
}
}
// Date NumberPickers
private val datePickerValue: ZonedDateTime
get() = ZonedDateTime.now().withYear(year_picker.value).withMonth(month_picker.value).withDayOfMonth(day_picker.value)
private fun initDateNumberPickers() {
getTab(Tab.START)?.setText(R.string.date_time_picker_start_date)
getTab(Tab.END)?.setText(R.string.date_time_picker_end_date)
date_pickers.visibility = View.VISIBLE
initMonthPicker()
initDayPicker()
initYearPicker()
}
private fun initMonthPicker() {
val months = DateFormatSymbols().months
with(month_picker) {
minValue = MIN_MONTHS
maxValue = months.size
displayedValues = months
setOnValueChangedListener(this@DateTimePicker)
}
}
private fun initDayPicker() {
updateDayPicker()
day_picker.setOnValueChangedListener(this@DateTimePicker)
}
private fun initYearPicker() {
val today = LocalDate.now()
with(year_picker) {
minValue = today.minusMonths(MONTH_LIMIT).year
maxValue = today.plusMonths(MONTH_LIMIT).year
wrapSelectorWheel = false
setOnValueChangedListener(this@DateTimePicker)
}
}
private fun setDatePickerValues(showEndTime: Boolean, animate: Boolean) {
val time = if (showEndTime) dateTime.plus(duration) else dateTime
if (animate) {
month_picker.quicklyAnimateValueTo(time.monthValue)
day_picker.quicklyAnimateValueTo(time.dayOfMonth)
year_picker.animateValueTo(time.year)
} else {
month_picker.value = time.monthValue
day_picker.value = time.dayOfMonth
year_picker.value = time.year
}
}
private fun updateDayPicker() {
val yearMonth = YearMonth.of(year_picker.value, month_picker.value)
with(day_picker) {
minValue = MIN_DAYS
maxValue = yearMonth.lengthOfMonth()
}
}
private class DateFormatter(
private val context: Context,
private val today: LocalDate,
@ -253,11 +362,10 @@ internal class DateTimePicker : LinearLayout, NumberPicker.OnValueChangeListener
else -> {
val today = LocalDate.now()
val date = this.today.plusDays((value - todayIndex).toLong())
if (DateTimeUtils.isSameYear(today, date)) {
if (DateTimeUtils.isSameYear(today, date))
DateStringUtils.formatDateAbbrevAll(context, date)
} else {
else
DateStringUtils.formatWeekdayDateYearAbbrev(context, date)
}
}
}
}

Просмотреть файл

@ -7,6 +7,7 @@ package com.microsoft.officeuifabric.datetimepicker
import android.animation.Animator
import android.animation.AnimatorListenerAdapter
import android.content.Context
import android.os.Bundle
import android.support.v4.app.Fragment
import android.support.v4.app.FragmentManager
@ -20,14 +21,15 @@ import android.view.ViewGroup
import com.microsoft.officeuifabric.R
import com.microsoft.officeuifabric.calendar.OnDateSelectedListener
import com.microsoft.officeuifabric.datetimepicker.DateTimePicker.PickerMode
import com.microsoft.officeuifabric.util.*
import com.microsoft.officeuifabric.view.ResizableDialog
import kotlinx.android.synthetic.main.dialog_date_time_picker.*
import org.threeten.bp.Duration
import org.threeten.bp.ZonedDateTime
// TODO implement accessible Modes
// TODO consider merging Mode and DatePickMode since not all combinations will work
// TODO consider merging PickerMode and DateRangeMode since not all combinations will work
// TODO KitKat design alignment
/**
* [DateTimePickerDialog] provides a dialog view housing both a [DatePickerFragment] and [DateTimePickerFragment] in a [WrapContentViewPager]
* as well as includes toolbar UI and menu buttons to dismiss the dialog and accept a date/ time
@ -38,57 +40,50 @@ class DateTimePickerDialog : ResizableDialog(), Toolbar.OnMenuItemClickListener,
@JvmStatic
fun newInstance(
context: Context,
dateTime: ZonedDateTime,
duration: Duration,
mode: Mode,
datePickMode: DatePickMode
dateRangeMode: DateRangeMode
): DateTimePickerDialog {
val args = Bundle()
args.putSerializable(DateTimePickerExtras.DATE_TIME, dateTime)
args.putSerializable(DateTimePickerExtras.DURATION, duration)
args.putSerializable(DateTimePickerExtras.DISPLAY_MODE, getDisplayMode(dateTime, duration, mode))
args.putSerializable(DateTimePickerExtras.DATE_PICK_MODE, datePickMode)
args.putSerializable(DateTimePickerExtras.DISPLAY_MODE, getDisplayMode(context, dateTime, duration, mode))
args.putSerializable(DateTimePickerExtras.DATE_RANGE_MODE, dateRangeMode)
val dialog = DateTimePickerDialog()
dialog.arguments = args
return dialog
}
private fun getDisplayMode(dateTime: ZonedDateTime, duration: Duration, mode: Mode): DisplayMode {
if (mode != Mode.DATE) {
private fun getDisplayMode(context: Context, dateTime: ZonedDateTime, duration: Duration, mode: Mode): DisplayMode {
if (context.isAccessibilityEnabled) {
return mode.accessibleMode
} else {
val endTime = dateTime.plus(duration)
val isSameDayEvent = DateTimeUtils.isSameDay(dateTime, endTime)
return if (isSameDayEvent) mode.defaultMode else DisplayMode.TIME
if (isSameDayEvent || mode == Mode.DATE)
return mode.defaultMode
else
return DisplayMode.TIME
}
return mode.defaultMode
}
}
enum class Mode(internal val defaultMode: DisplayMode, internal val accessibleMode: DisplayMode) {
DATE(DisplayMode.DATE, DisplayMode.ACCESSIBLE_DATE),
DATE_TIME(DisplayMode.DATE_TIME, DisplayMode.ACCESSIBLE_DATE_TIME),
TIME_DATE(DisplayMode.TIME_DATE, DisplayMode.ACCESSIBLE_DATE_TIME),
DATE_TIME_RANGE(DisplayMode.DATE_TIME_RANGE, DisplayMode.ACCESSIBLE_DATE_TIME_RANGE)
TIME_DATE(DisplayMode.TIME_DATE, DisplayMode.ACCESSIBLE_DATE_TIME)
}
private enum class DisplayMode(
val showDatePicker: Boolean,
val showDateTimePicker: Boolean,
val showTime: Boolean,
val showDateTimeRange: Boolean,
val dateTabIndex: Int,
val dateTimeTabIndex: Int,
val initialIndex: Int
) {
ACCESSIBLE_DATE(false, true, false, false, -1, 0, 0),
ACCESSIBLE_DATE_TIME(false, true, true, false, -1, 0, 0),
ACCESSIBLE_DATE_TIME_RANGE(false, true, true, true, -1, 0, 0),
DATE(true, false, false, false, 0, -1, 0),
DATE_TIME(true, true, true, false, 0, 1, 0),
DATE_TIME_RANGE(true, true, true, true, 0, 1, 1),
TIME(false, false, true, true, -1, 0, 0),
TIME_DATE(true, true, true, false, 0, 1, 1),
private enum class DisplayMode(val dateTabIndex: Int, val dateTimeTabIndex: Int) {
ACCESSIBLE_DATE(0, -1),
ACCESSIBLE_DATE_TIME(-1, 0),
DATE(0, -1),
DATE_TIME(0, 1),
TIME(-1, 0),
TIME_DATE(0, 1)
}
var onDateTimePickedListener: OnDateTimePickedListener? = null
@ -97,28 +92,28 @@ class DateTimePickerDialog : ResizableDialog(), Toolbar.OnMenuItemClickListener,
private lateinit var dateTime: ZonedDateTime
private lateinit var duration: Duration
private lateinit var displayMode: DisplayMode
private lateinit var datePickMode: DatePickMode
private lateinit var dateRangeMode: DateRangeMode
private lateinit var pagerAdapter: DateTimePagerAdapter
private var selectedDateTimeTab: DateTimePicker.Tab = DateTimePicker.Tab.START_TIME
get() = pagerAdapter.dateTimePicker?.selectedTab ?: field ?: DateTimePicker.Tab.START_TIME
private var selectedDateTimeTab: DateTimePicker.Tab = DateTimePicker.Tab.START
get() = pagerAdapter.dateTimePickerFragment?.selectedTab ?: field ?: DateTimePicker.Tab.START
private val animatorListener = object : AnimatorListenerAdapter() {
override fun onAnimationCancel(animation: Animator) {
super.onAnimationCancel(animation)
pagerAdapter.datePicker?.collapseCalendarView()
pagerAdapter.datePickerFragment?.collapseCalendarView()
}
override fun onAnimationEnd(animation: Animator) {
super.onAnimationEnd(animation)
pagerAdapter.datePicker?.collapseCalendarView()
pagerAdapter.datePickerFragment?.collapseCalendarView()
}
}
private val pageChangeListener = object : ViewPager.SimpleOnPageChangeListener() {
override fun onPageSelected(position: Int) {
updateTitles()
val datePicker = pagerAdapter.datePicker
val dateTimePicker = pagerAdapter.dateTimePicker
val datePicker = pagerAdapter.datePickerFragment
val dateTimePicker = pagerAdapter.dateTimePickerFragment
if (position == displayMode.dateTabIndex && datePicker != null) {
view_pager.currentObject = datePicker
// We're switching from the tall time picker to the short date picker. Layout transition
@ -141,10 +136,11 @@ class DateTimePickerDialog : ResizableDialog(), Toolbar.OnMenuItemClickListener,
dateTime = bundle.getSerializable(DateTimePickerExtras.DATE_TIME) as ZonedDateTime
duration = bundle.getSerializable(DateTimePickerExtras.DURATION) as Duration
displayMode = bundle.getSerializable(DateTimePickerExtras.DISPLAY_MODE) as DisplayMode
datePickMode = bundle.getSerializable(DateTimePickerExtras.DATE_PICK_MODE) as DatePickMode
dateRangeMode = bundle.getSerializable(DateTimePickerExtras.DATE_RANGE_MODE) as DateRangeMode
savedInstanceState?.let {
selectedDateTimeTab = it.getSerializable(SELECTED_DATE_TIME_TAB) as DateTimePicker.Tab
displayMode = it.getSerializable(DateTimePickerExtras.DISPLAY_MODE) as DisplayMode
}
}
@ -183,7 +179,7 @@ class DateTimePickerDialog : ResizableDialog(), Toolbar.OnMenuItemClickListener,
bundle.putSerializable(DateTimePickerExtras.DATE_TIME, dateTime)
bundle.putSerializable(DateTimePickerExtras.DURATION, duration)
bundle.putSerializable(DateTimePickerExtras.DISPLAY_MODE, displayMode)
bundle.putSerializable(DateTimePickerExtras.DATE_PICK_MODE, datePickMode)
bundle.putSerializable(DateTimePickerExtras.DATE_RANGE_MODE, dateRangeMode)
bundle.putSerializable(SELECTED_DATE_TIME_TAB, selectedDateTimeTab)
}
@ -196,7 +192,7 @@ class DateTimePickerDialog : ResizableDialog(), Toolbar.OnMenuItemClickListener,
}
override fun onDateSelected(dateTime: ZonedDateTime) {
if (datePickMode === DatePickMode.RANGE_END) {
if (dateRangeMode === DateRangeMode.END) {
if (dateTime.isBefore(this.dateTime))
this.dateTime = dateTime.minus(duration)
else
@ -207,7 +203,7 @@ class DateTimePickerDialog : ResizableDialog(), Toolbar.OnMenuItemClickListener,
updateTitles()
pagerAdapter.dateTimePicker?.setDate(this.dateTime)
pagerAdapter.dateTimePickerFragment?.setDate(this.dateTime)
}
override fun onDateTimeSelected(dateTime: ZonedDateTime, duration: Duration) {
@ -216,21 +212,27 @@ class DateTimePickerDialog : ResizableDialog(), Toolbar.OnMenuItemClickListener,
updateTitles()
pagerAdapter.datePicker?.setTimeSlot(TimeSlot(this.dateTime, this.duration))
pagerAdapter.datePickerFragment?.setTimeSlot(TimeSlot(this.dateTime, this.duration))
}
private fun updateTitles() {
val context = context ?: return
when (displayMode) {
DisplayMode.DATE -> {
toolbar.title = if (datePickMode == DatePickMode.RANGE_START)
toolbar.title = if (dateRangeMode == DateRangeMode.START)
DateStringUtils.formatDateAbbrevAll(context, dateTime)
else
DateStringUtils.formatDateAbbrevAll(context, dateTime.plus(duration))
}
DisplayMode.ACCESSIBLE_DATE_TIME -> {
toolbar.title = if (datePickMode == DatePickMode.RANGE_START)
DateStringUtils.formatAbbrevDateAtTime(context, dateTime)
DisplayMode.ACCESSIBLE_DATE -> {
toolbar.title = if (dateRangeMode != DateRangeMode.NONE)
resources.getString(R.string.date_time_picker_choose_date)
else
DateStringUtils.formatDateAbbrevAll(context, dateTime.plus(duration))
}
DisplayMode.TIME, DisplayMode.ACCESSIBLE_DATE_TIME -> {
toolbar.title = if (dateRangeMode != DateRangeMode.NONE)
resources.getString(R.string.date_time_picker_choose_time)
else
DateStringUtils.formatAbbrevDateTime(context, dateTime.plus(duration))
}
@ -238,7 +240,7 @@ class DateTimePickerDialog : ResizableDialog(), Toolbar.OnMenuItemClickListener,
val currentTab = view_pager.currentItem
toolbar.setTitle(if (currentTab == displayMode.dateTabIndex) R.string.date_time_picker_choose_date else R.string.date_time_picker_choose_time)
val tabDate = if (selectedDateTimeTab == DateTimePicker.Tab.END_TIME) dateTime.plus(duration) else dateTime
val tabDate = if (selectedDateTimeTab == DateTimePicker.Tab.END) dateTime.plus(duration) else dateTime
// Set tab titles
if (displayMode.dateTabIndex != -1)
@ -254,28 +256,35 @@ class DateTimePickerDialog : ResizableDialog(), Toolbar.OnMenuItemClickListener,
}
private inner class DateTimePagerAdapter(fragmentManager: FragmentManager) : FragmentPagerAdapter(fragmentManager) {
var datePicker: DatePickerFragment? = null
var dateTimePicker: DateTimePickerFragment? = null
var datePickerFragment: DatePickerFragment? = null
var dateTimePickerFragment: DateTimePickerFragment? = null
override fun getItem(position: Int): Fragment {
val fragment: Fragment = if (position == displayMode.dateTabIndex) DatePickerFragment() else DateTimePickerFragment()
val fragment: Fragment = if (useDatePickerFragment(position))
DatePickerFragment()
else
DateTimePickerFragment()
fragment.arguments = arguments
return fragment
}
override fun getCount(): Int = if (displayMode == DisplayMode.DATE_TIME || displayMode == DisplayMode.TIME_DATE) 2 else 1
override fun getCount(): Int = if ((displayMode == DisplayMode.DATE_TIME || displayMode == DisplayMode.TIME_DATE)) 2 else 1
override fun instantiateItem(container: ViewGroup, position: Int): Any {
val fragment = super.instantiateItem(container, position) as Fragment
val currentItem = view_pager.currentItem
if (fragment is DatePickerFragment) {
datePickerFragment = fragment
datePickerFragment?.arguments?.putBoolean(DateTimePickerExtras.EXPAND_ON_START, position != currentItem)
datePickerFragment?.onDateSelectedListener = this@DateTimePickerDialog
} else {
dateTimePickerFragment = fragment as DateTimePickerFragment
dateTimePickerFragment?.onDateTimeSelectedListener = this@DateTimePickerDialog
if (position == displayMode.dateTabIndex) {
datePicker = fragment as DatePickerFragment
datePicker?.arguments?.putBoolean(DateTimePickerExtras.EXPAND_ON_START, position != currentItem)
datePicker?.onDateSelectedListener = this@DateTimePickerDialog
} else if (position == displayMode.dateTimeTabIndex) {
dateTimePicker = fragment as DateTimePickerFragment
dateTimePicker?.onDateTimeSelectedListener = this@DateTimePickerDialog
val pickerMode = if (displayMode == DisplayMode.ACCESSIBLE_DATE) PickerMode.DATE else PickerMode.DATE_TIME
dateTimePickerFragment?.arguments?.putSerializable(DateTimePickerExtras.PICKER_MODE, pickerMode)
}
if (position == currentItem)
@ -284,15 +293,8 @@ class DateTimePickerDialog : ResizableDialog(), Toolbar.OnMenuItemClickListener,
return fragment
}
override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
if (position == displayMode.dateTabIndex) {
datePicker = null
} else if (position == displayMode.dateTimeTabIndex) {
dateTimePicker = null
}
super.destroyItem(container, position, `object`)
}
private fun useDatePickerFragment(position: Int): Boolean =
position == displayMode.dateTabIndex && (displayMode == DisplayMode.DATE || displayMode == DisplayMode.TIME_DATE || displayMode == DisplayMode.DATE_TIME)
}
}

Просмотреть файл

@ -6,9 +6,10 @@
package com.microsoft.officeuifabric.datetimepicker
internal object DateTimePickerExtras {
const val DATE_RANGE_MODE = "DATE_RANGE_MODE"
const val DATE_TIME = "DATE_TIME"
const val DISPLAY_MODE = "DISPLAY_MODE"
const val DURATION = "DURATION"
const val EXPAND_ON_START = "EXPAND_ON_START"
const val DATE_PICK_MODE = "DATE_PICK_MODE"
const val PICKER_MODE = "PICKER_MODE"
}

Просмотреть файл

@ -18,7 +18,9 @@ import org.threeten.bp.Duration
import org.threeten.bp.ZonedDateTime
/**
* [DateTimePickerFragment] houses a [DateTimePicker] instance and configures aspects of the view
* [DateTimePickerFragment] houses a [DateTimePicker] instance and configures aspects of the view.
* When in TalkBalk this takes over date picking responsibilities from [DatePickerFragment] and
* [DateTimePicker] shows months, days and years instead of date, hour, minute and period.
*/
internal class DateTimePickerFragment : Fragment(), OnDateTimeSelectedListener {
var onDateTimeSelectedListener: OnDateTimeSelectedListener? = null
@ -26,7 +28,8 @@ internal class DateTimePickerFragment : Fragment(), OnDateTimeSelectedListener {
val selectedTab: DateTimePicker.Tab
get() = date_time_picker.selectedTab
private var datePickMode: DatePickMode? = null
private lateinit var dateRangeMode: DateRangeMode
private lateinit var pickerMode: DateTimePicker.PickerMode
fun setDate(date: ZonedDateTime) {
val range = date_time_picker.timeSlot ?: return
@ -39,7 +42,7 @@ internal class DateTimePickerFragment : Fragment(), OnDateTimeSelectedListener {
super.onCreate(savedInstanceState)
val bundle = savedInstanceState ?: arguments ?: return
datePickMode = bundle.getSerializable(DateTimePickerExtras.DATE_PICK_MODE) as DatePickMode
dateRangeMode = bundle.getSerializable(DateTimePickerExtras.DATE_RANGE_MODE) as DateRangeMode
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
@ -48,12 +51,17 @@ internal class DateTimePickerFragment : Fragment(), OnDateTimeSelectedListener {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val bundle = savedInstanceState ?: arguments
if (bundle != null) {
pickerMode = bundle.getSerializable(DateTimePickerExtras.PICKER_MODE) as DateTimePicker.PickerMode
val dateTime = bundle.getSerializable(DateTimePickerExtras.DATE_TIME) as ZonedDateTime
val duration = bundle.getSerializable(DateTimePickerExtras.DURATION) as Duration
date_time_picker.timeSlot = TimeSlot(dateTime, duration)
}
date_time_picker.pickerMode = pickerMode
date_time_picker.onDateTimeSelectedListener = this
initUI()
@ -62,16 +70,17 @@ internal class DateTimePickerFragment : Fragment(), OnDateTimeSelectedListener {
override fun onSaveInstanceState(bundle: Bundle) {
super.onSaveInstanceState(bundle)
if (datePickMode != DatePickMode.SINGLE) {
datePickMode = if (date_time_picker.selectedTab == DateTimePicker.Tab.START_TIME)
DatePickMode.RANGE_START
if (dateRangeMode != DateRangeMode.NONE) {
dateRangeMode = if (date_time_picker.selectedTab == DateTimePicker.Tab.START)
DateRangeMode.START
else
DatePickMode.RANGE_END
DateRangeMode.END
}
bundle.putSerializable(DateTimePickerExtras.DATE_PICK_MODE, datePickMode)
bundle.putSerializable(DateTimePickerExtras.DATE_RANGE_MODE, dateRangeMode)
bundle.putSerializable(DateTimePickerExtras.DATE_TIME, date_time_picker.timeSlot?.start)
bundle.putSerializable(DateTimePickerExtras.DURATION, date_time_picker.timeSlot?.duration)
bundle.putSerializable(DateTimePickerExtras.PICKER_MODE, pickerMode)
}
override fun onDateTimeSelected(dateTime: ZonedDateTime, duration: Duration) {
@ -79,18 +88,18 @@ internal class DateTimePickerFragment : Fragment(), OnDateTimeSelectedListener {
}
private fun initUI() {
when (datePickMode) {
DatePickMode.RANGE_START -> {
date_time_picker.selectTab(DateTimePicker.Tab.START_TIME)
date_time_picker.displayTime(true, false)
when (dateRangeMode) {
DateRangeMode.START -> {
date_time_picker.selectTab(DateTimePicker.Tab.START)
date_time_picker.setPickerValues(false, false)
}
DatePickMode.RANGE_END -> {
date_time_picker.selectTab(DateTimePicker.Tab.END_TIME)
date_time_picker.displayTime(false, false)
DateRangeMode.END -> {
date_time_picker.selectTab(DateTimePicker.Tab.END)
date_time_picker.setPickerValues(true, false)
}
DatePickMode.SINGLE -> {
date_time_picker.selectTab(DateTimePicker.Tab.NO_DURATION)
date_time_picker.displayTime(true, false)
DateRangeMode.NONE -> {
date_time_picker.selectTab(DateTimePicker.Tab.NONE)
date_time_picker.setPickerValues(false, false)
}
}
}

Просмотреть файл

@ -14,5 +14,5 @@ import android.view.accessibility.AccessibilityManager
val Context.isAccessibilityEnabled: Boolean
get() = accessibilityManager.isTouchExplorationEnabled
private val Context.accessibilityManager: AccessibilityManager
val Context.accessibilityManager: AccessibilityManager
get() = getSystemService(Context.ACCESSIBILITY_SERVICE) as AccessibilityManager

Просмотреть файл

@ -14,7 +14,7 @@
android:showDividers="middle|end">
<android.support.design.widget.TabLayout
android:id="@+id/start_end_time_tab"
android:id="@+id/start_end_tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabGravity="fill"
@ -22,10 +22,12 @@
style="@style/Widget.UIFabric.TabLayout" />
<LinearLayout
android:id="@+id/date_time_pickers"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal"
android:visibility="gone"
android:padding="@dimen/uifabric_date_time_picker_padding">
<com.microsoft.officeuifabric.view.NumberPicker
@ -33,7 +35,7 @@
style="@style/Widget.UIFabric.NumberPicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:internalMinWidth="@dimen/uifabric_number_picker_date_internalMinWidth" />
app:internalMinWidth="@dimen/uifabric_date_time_picker_date_internal_min_width" />
<com.microsoft.officeuifabric.view.NumberPicker
android:id="@+id/hour_picker"
@ -55,4 +57,35 @@
</LinearLayout>
<LinearLayout
android:id="@+id/date_pickers"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:visibility="gone"
android:orientation="horizontal"
android:padding="@dimen/uifabric_date_time_picker_padding">
<com.microsoft.officeuifabric.view.NumberPicker
android:id="@+id/month_picker"
style="@style/Widget.UIFabric.NumberPicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:internalMinWidth="@dimen/uifabric_date_time_picker_month_internal_min_width" />
<com.microsoft.officeuifabric.view.NumberPicker
android:id="@+id/day_picker"
style="@style/Widget.UIFabric.NumberPicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<com.microsoft.officeuifabric.view.NumberPicker
android:id="@+id/year_picker"
style="@style/Widget.UIFabric.NumberPicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:internalMinWidth="@dimen/uifabric_date_time_picker_year_internal_min_width" />
</LinearLayout>
</LinearLayout>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Gekies</string>
<string name="date_time_picker_start_time">Begintyd</string>
<string name="date_time_picker_end_time">Eindtyd</string>
<string name="date_time_picker_start_date">Begindatum</string>
<string name="date_time_picker_end_date">Einddatum</string>
<string name="date_time_picker_choose_time">Kies tyd</string>
<string name="date_time_picker_choose_date">Kies datum</string>
<string name="people_picker_sample_label">Etiket</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">ምርጥ</string>
<string name="date_time_picker_start_time">መጀመሪያ ጊዜ</string>
<string name="date_time_picker_end_time">መጨረሻ ጊዜ</string>
<string name="date_time_picker_start_date">የተጀመረበት ቀን</string>
<string name="date_time_picker_end_date">የመጨረሻ ቀን</string>
<string name="date_time_picker_choose_time">ጊዜ ይምረጡ</string>
<string name="date_time_picker_choose_date">ቀን ይምረጡ</string>
<string name="people_picker_sample_label">መለያ</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">محدد</string>
<string name="date_time_picker_start_time">وقت البدء</string>
<string name="date_time_picker_end_time">وقت الانتهاء</string>
<string name="date_time_picker_start_date">تاريخ البدء</string>
<string name="date_time_picker_end_date">تاريخ الانتهاء</string>
<string name="date_time_picker_choose_time">اختيار الوقت</string>
<string name="date_time_picker_choose_date">اختيار التاريخ</string>
<string name="people_picker_sample_label">تسمية</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Seçilib</string>
<string name="date_time_picker_start_time">Başlama vaxtı</string>
<string name="date_time_picker_end_time">Bitmə vaxtı</string>
<string name="date_time_picker_start_date">Başlama tarixi</string>
<string name="date_time_picker_end_date">Bitmə tarixi</string>
<string name="date_time_picker_choose_time">Vaxt seçin</string>
<string name="date_time_picker_choose_date">Tarix seçin</string>
<string name="people_picker_sample_label">Nişan</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Izabrano</string>
<string name="date_time_picker_start_time">Vreme početka</string>
<string name="date_time_picker_end_time">Vreme završetka</string>
<string name="date_time_picker_start_date">Datum početka</string>
<string name="date_time_picker_end_date">Datum završetka</string>
<string name="date_time_picker_choose_time">Odaberite vreme</string>
<string name="date_time_picker_choose_date">Odaberite datum</string>
<string name="people_picker_sample_label">Oznaka</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Вылучана</string>
<string name="date_time_picker_start_time">Час пачатку</string>
<string name="date_time_picker_end_time">Час заканчэння</string>
<string name="date_time_picker_start_date">Дата пачатку</string>
<string name="date_time_picker_end_date">Дата заканчэння</string>
<string name="date_time_picker_choose_time">Выбар часу</string>
<string name="date_time_picker_choose_date">Выбар даты</string>
<string name="people_picker_sample_label">Пазнака</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Избрано</string>
<string name="date_time_picker_start_time">Начален час</string>
<string name="date_time_picker_end_time">Краен час</string>
<string name="date_time_picker_start_date">Начална дата</string>
<string name="date_time_picker_end_date">Крайна дата</string>
<string name="date_time_picker_choose_time">Изберете час</string>
<string name="date_time_picker_choose_date">Изберете дата</string>
<string name="people_picker_sample_label">Етикет</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">নির্বাচিত</string>
<string name="date_time_picker_start_time">শুরু করার সময়</string>
<string name="date_time_picker_end_time">সমাপ্তির সময়</string>
<string name="date_time_picker_start_date">শুরু করার তারিখ</string>
<string name="date_time_picker_end_date">শেষ করার তারিখ</string>
<string name="date_time_picker_choose_time">সময় বেছে নিন</string>
<string name="date_time_picker_choose_date">তারিখ বেছে নিন</string>
<string name="people_picker_sample_label">লেবেল</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Odabrano</string>
<string name="date_time_picker_start_time">Vrijeme početka</string>
<string name="date_time_picker_end_time">Vrijeme završetka</string>
<string name="date_time_picker_start_date">Datum početka</string>
<string name="date_time_picker_end_date">Datum završetka</string>
<string name="date_time_picker_choose_time">Izaberite vrijeme</string>
<string name="date_time_picker_choose_date">Izaberite datum</string>
<string name="people_picker_sample_label">Oznaka</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Seleccionat</string>
<string name="date_time_picker_start_time">Hora d\'inici</string>
<string name="date_time_picker_end_time">Hora de finalització</string>
<string name="date_time_picker_start_date">Data d\'inici</string>
<string name="date_time_picker_end_date">Data de finalització</string>
<string name="date_time_picker_choose_time">Tria l\'hora</string>
<string name="date_time_picker_choose_date">Tria la data</string>
<string name="people_picker_sample_label">Etiqueta</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Vybráno</string>
<string name="date_time_picker_start_time">Počáteční čas</string>
<string name="date_time_picker_end_time">Koncový čas</string>
<string name="date_time_picker_start_date">Počáteční datum</string>
<string name="date_time_picker_end_date">Koncové datum</string>
<string name="date_time_picker_choose_time">Zvolte čas</string>
<string name="date_time_picker_choose_date">Zvolte datum</string>
<string name="people_picker_sample_label">Popisek</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Markeret</string>
<string name="date_time_picker_start_time">Starttidspunkt</string>
<string name="date_time_picker_end_time">Sluttidspunkt</string>
<string name="date_time_picker_start_date">Startdato</string>
<string name="date_time_picker_end_date">Slutdato</string>
<string name="date_time_picker_choose_time">Vælg tid</string>
<string name="date_time_picker_choose_date">Vælg en dato</string>
<string name="people_picker_sample_label">Mærkat</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Ausgewählt</string>
<string name="date_time_picker_start_time">Startzeit</string>
<string name="date_time_picker_end_time">Endzeit</string>
<string name="date_time_picker_start_date">Startdatum</string>
<string name="date_time_picker_end_date">Enddatum</string>
<string name="date_time_picker_choose_time">Zeit auswählen</string>
<string name="date_time_picker_choose_date">Datum auswählen</string>
<string name="people_picker_sample_label">Bezeichnung</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Επιλεγμένο</string>
<string name="date_time_picker_start_time">Ώρα έναρξης</string>
<string name="date_time_picker_end_time">Ώρα λήξης</string>
<string name="date_time_picker_start_date">Ημερομηνία έναρξης</string>
<string name="date_time_picker_end_date">Ημερομηνία λήξης</string>
<string name="date_time_picker_choose_time">Επιλογή ώρας</string>
<string name="date_time_picker_choose_date">Επιλογή ημερομηνίας</string>
<string name="people_picker_sample_label">Ετικέτα</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Selected</string>
<string name="date_time_picker_start_time">Start time</string>
<string name="date_time_picker_end_time">End time</string>
<string name="date_time_picker_start_date">Start date</string>
<string name="date_time_picker_end_date">End date</string>
<string name="date_time_picker_choose_time">Choose time</string>
<string name="date_time_picker_choose_date">Choose date</string>
<string name="people_picker_sample_label">Label</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Seleccionado</string>
<string name="date_time_picker_start_time">Hora de inicio</string>
<string name="date_time_picker_end_time">Hora de finalización</string>
<string name="date_time_picker_start_date">Fecha de inicio</string>
<string name="date_time_picker_end_date">Fecha de finalización</string>
<string name="date_time_picker_choose_time">Elegir hora</string>
<string name="date_time_picker_choose_date">Elegir fecha</string>
<string name="people_picker_sample_label">Etiqueta</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Seleccionado</string>
<string name="date_time_picker_start_time">Hora de inicio</string>
<string name="date_time_picker_end_time">Hora de finalización</string>
<string name="date_time_picker_start_date">Fecha de inicio</string>
<string name="date_time_picker_end_date">Fecha de finalización</string>
<string name="date_time_picker_choose_time">Elegir hora</string>
<string name="date_time_picker_choose_date">Elegir fecha</string>
<string name="people_picker_sample_label">Etiqueta</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Valitud</string>
<string name="date_time_picker_start_time">Algusaeg</string>
<string name="date_time_picker_end_time">Lõppaeg</string>
<string name="date_time_picker_start_date">Alguskuupäev</string>
<string name="date_time_picker_end_date">Lõppkuupäev</string>
<string name="date_time_picker_choose_time">Valige kellaaeg</string>
<string name="date_time_picker_choose_date">Valige kuupäev</string>
<string name="people_picker_sample_label">Silt</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Hautatuta</string>
<string name="date_time_picker_start_time">Hasiera-ordua</string>
<string name="date_time_picker_end_time">Amaiera-ordua</string>
<string name="date_time_picker_start_date">Hasiera-data</string>
<string name="date_time_picker_end_date">Amaiera-data</string>
<string name="date_time_picker_choose_time">Aukeratu ordua</string>
<string name="date_time_picker_choose_date">Aukeratu data</string>
<string name="people_picker_sample_label">Etiketa</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">انتخاب‌شده</string>
<string name="date_time_picker_start_time">زمان شروع</string>
<string name="date_time_picker_end_time">زمان پایان</string>
<string name="date_time_picker_start_date">تاریخ شروع</string>
<string name="date_time_picker_end_date">تاریخ پایان</string>
<string name="date_time_picker_choose_time">انتخاب زمان</string>
<string name="date_time_picker_choose_date">انتخاب تاریخ</string>
<string name="people_picker_sample_label">برچسب</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Valittu</string>
<string name="date_time_picker_start_time">Alkamisaika</string>
<string name="date_time_picker_end_time">Päättymisaika</string>
<string name="date_time_picker_start_date">Alkamispäivä</string>
<string name="date_time_picker_end_date">Päättymispäivä</string>
<string name="date_time_picker_choose_time">Valitse aika</string>
<string name="date_time_picker_choose_date">Valitse päivämäärä</string>
<string name="people_picker_sample_label">Otsikko</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Napili</string>
<string name="date_time_picker_start_time">Oras ng pagsisimula</string>
<string name="date_time_picker_end_time">Oras ng pagtatapos</string>
<string name="date_time_picker_start_date">Petsa ng pagsisimula</string>
<string name="date_time_picker_end_date">Petsa ng pagtatapos</string>
<string name="date_time_picker_choose_time">Pumili ng oras</string>
<string name="date_time_picker_choose_date">Pumili ng petsa</string>
<string name="people_picker_sample_label">Label</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Sélectionné</string>
<string name="date_time_picker_start_time">Heure de début</string>
<string name="date_time_picker_end_time">Heure de fin</string>
<string name="date_time_picker_start_date">Date de début</string>
<string name="date_time_picker_end_date">Date de fin</string>
<string name="date_time_picker_choose_time">Choisir lheure</string>
<string name="date_time_picker_choose_date">Choisir la date</string>
<string name="people_picker_sample_label">Étiquette</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Sélectionné</string>
<string name="date_time_picker_start_time">Heure de début</string>
<string name="date_time_picker_end_time">Heure de fin</string>
<string name="date_time_picker_start_date">Date de début</string>
<string name="date_time_picker_end_date">Date de fin</string>
<string name="date_time_picker_choose_time">Choisir lheure</string>
<string name="date_time_picker_choose_date">Choisir la date</string>
<string name="people_picker_sample_label">Étiquette</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Seleccionado</string>
<string name="date_time_picker_start_time">Hora de inicio</string>
<string name="date_time_picker_end_time">Hora de finalización</string>
<string name="date_time_picker_start_date">Data inicial</string>
<string name="date_time_picker_end_date">Data final</string>
<string name="date_time_picker_choose_time">Escoller hora</string>
<string name="date_time_picker_choose_date">Escoller data</string>
<string name="people_picker_sample_label">Etiqueta</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Zaɓaɓɓe</string>
<string name="date_time_picker_start_time">Lokacin farawa</string>
<string name="date_time_picker_end_time">Lokacin ƙarewa</string>
<string name="date_time_picker_start_date">Ranar farawa</string>
<string name="date_time_picker_end_date">Ranar ƙarewa</string>
<string name="date_time_picker_choose_time">Zaɓi lokaci</string>
<string name="date_time_picker_choose_date">Zaɓi kwanan wata</string>
<string name="people_picker_sample_label">Lamba</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">चयनित</string>
<string name="date_time_picker_start_time">प्रारंभ समय</string>
<string name="date_time_picker_end_time">समाप्ति समय</string>
<string name="date_time_picker_start_date">प्रारंभ दिनांक</string>
<string name="date_time_picker_end_date">समाप्ति दिनांक</string>
<string name="date_time_picker_choose_time">समय चुनें</string>
<string name="date_time_picker_choose_date">दिनांक चुनें</string>
<string name="people_picker_sample_label">लेबल</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Odabrano</string>
<string name="date_time_picker_start_time">Vrijeme početka</string>
<string name="date_time_picker_end_time">Vrijeme završetka</string>
<string name="date_time_picker_start_date">Datum početka</string>
<string name="date_time_picker_end_date">Datum završetka</string>
<string name="date_time_picker_choose_time">Odaberite vrijeme</string>
<string name="date_time_picker_choose_date">Odaberite datum</string>
<string name="people_picker_sample_label">Oznaka</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Kijelölve</string>
<string name="date_time_picker_start_time">Kezdés ideje</string>
<string name="date_time_picker_end_time">Befejezés ideje</string>
<string name="date_time_picker_start_date">Kezdés</string>
<string name="date_time_picker_end_date">Befejezés</string>
<string name="date_time_picker_choose_time">Időpont kiválasztása</string>
<string name="date_time_picker_choose_date">Dátum kiválasztása</string>
<string name="people_picker_sample_label">Címke</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Dipilih</string>
<string name="date_time_picker_start_time">Waktu mulai</string>
<string name="date_time_picker_end_time">Waktu selesai</string>
<string name="date_time_picker_start_date">Tanggal mulai</string>
<string name="date_time_picker_end_date">Tanggal selesai</string>
<string name="date_time_picker_choose_time">Pilih waktu</string>
<string name="date_time_picker_choose_date">Pilih tanggal</string>
<string name="people_picker_sample_label">Label</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Valið</string>
<string name="date_time_picker_start_time">Upphafstími</string>
<string name="date_time_picker_end_time">Lokatími</string>
<string name="date_time_picker_start_date">Upphafsdagur</string>
<string name="date_time_picker_end_date">Lokadagur</string>
<string name="date_time_picker_choose_time">Veldu tíma</string>
<string name="date_time_picker_choose_date">Veldu dagsetningu</string>
<string name="people_picker_sample_label">Merki</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Selezionato</string>
<string name="date_time_picker_start_time">Ora di inizio</string>
<string name="date_time_picker_end_time">Ora di fine</string>
<string name="date_time_picker_start_date">Data di inizio</string>
<string name="date_time_picker_end_date">Data di fine</string>
<string name="date_time_picker_choose_time">Scegli un orario</string>
<string name="date_time_picker_choose_date">Scegli una data</string>
<string name="people_picker_sample_label">Etichetta</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">נבחר</string>
<string name="date_time_picker_start_time">שעת התחלה</string>
<string name="date_time_picker_end_time">שעת סיום</string>
<string name="date_time_picker_start_date">תאריך התחלה</string>
<string name="date_time_picker_end_date">תאריך סיום</string>
<string name="date_time_picker_choose_time">בחר שעה</string>
<string name="date_time_picker_choose_date">בחר תאריך</string>
<string name="people_picker_sample_label">תווית</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">選択済み</string>
<string name="date_time_picker_start_time">開始時刻</string>
<string name="date_time_picker_end_time">終了時刻</string>
<string name="date_time_picker_start_date">開始日</string>
<string name="date_time_picker_end_date">終了日</string>
<string name="date_time_picker_choose_time">時間の選択</string>
<string name="date_time_picker_choose_date">日付を選択</string>
<string name="people_picker_sample_label">ラベル</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Таңдалған</string>
<string name="date_time_picker_start_time">Басталу уақыты</string>
<string name="date_time_picker_end_time">Аяқталу уақыты</string>
<string name="date_time_picker_start_date">Басталу күні</string>
<string name="date_time_picker_end_date">Аяқталу күні</string>
<string name="date_time_picker_choose_time">Уақытты таңдаңыз</string>
<string name="date_time_picker_choose_date">Күнді таңдаңыз</string>
<string name="people_picker_sample_label">Белгі</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">បានជ្រើសរើស</string>
<string name="date_time_picker_start_time">ពេលវេលាចាប់ផ្ដើម</string>
<string name="date_time_picker_end_time">ពេលវេលាបញ្ចប់</string>
<string name="date_time_picker_start_date">កាលបរិច្ឆេទចាប់ផ្តើម</string>
<string name="date_time_picker_end_date">កាលបរិច្ឆេទបញ្ចប់</string>
<string name="date_time_picker_choose_time">ជ្រើសរើសពេលវេលា</string>
<string name="date_time_picker_choose_date">ជ្រើសរើសកាលបរិច្ឆេទ</string>
<string name="people_picker_sample_label">ស្លាក</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">ಆಯ್ಕೆಮಾಡಲಾಗಿದೆ</string>
<string name="date_time_picker_start_time">ಪ್ರಾರಂಭ ಸಮಯ</string>
<string name="date_time_picker_end_time">ಅಂತ್ಯ ಸಮಯ</string>
<string name="date_time_picker_start_date">ಆರಂಭದ ದಿನಾಂಕ</string>
<string name="date_time_picker_end_date">ಅಂತ್ಯ ದಿನಾಂಕ</string>
<string name="date_time_picker_choose_time">ಸಮಯ ಆರಿಸಿ</string>
<string name="date_time_picker_choose_date">ದಿನಾಂಕ ಆರಿಸಿ</string>
<string name="people_picker_sample_label">ಲೇಬಲ್</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">선택됨</string>
<string name="date_time_picker_start_time">시작 시간</string>
<string name="date_time_picker_end_time">종료 시간</string>
<string name="date_time_picker_start_date">시작 날짜</string>
<string name="date_time_picker_end_date">종료 날짜</string>
<string name="date_time_picker_choose_time">시간 선택</string>
<string name="date_time_picker_choose_date">날짜 선택</string>
<string name="people_picker_sample_label">레이블</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">ເລືອກແລ້ວ</string>
<string name="date_time_picker_start_time">ເວລາເລີ່ມຕົ້ນ</string>
<string name="date_time_picker_end_time">ເວລາສິ້ນສຸດ</string>
<string name="date_time_picker_start_date">ວັນທີເລີ່ມຕົ້ນ</string>
<string name="date_time_picker_end_date">ວັນທີສິ້ນສຸດ</string>
<string name="date_time_picker_choose_time">ເລືອກເວລາ</string>
<string name="date_time_picker_choose_date">ເລືອກວັນທີ</string>
<string name="people_picker_sample_label">ປ້າຍກຳກັບ</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Pasirinkta</string>
<string name="date_time_picker_start_time">Pradžios laikas</string>
<string name="date_time_picker_end_time">Pabaigos laikas</string>
<string name="date_time_picker_start_date">Pradžios data</string>
<string name="date_time_picker_end_date">Pabaigos data</string>
<string name="date_time_picker_choose_time">Pasirinkite laiką</string>
<string name="date_time_picker_choose_date">Pasirinkite datą</string>
<string name="people_picker_sample_label">Žyma</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Atlasīts</string>
<string name="date_time_picker_start_time">Sākuma laiks</string>
<string name="date_time_picker_end_time">Beigu laiks</string>
<string name="date_time_picker_start_date">Sākuma datums</string>
<string name="date_time_picker_end_date">Beigu datums</string>
<string name="date_time_picker_choose_time">Izvēlieties laiku</string>
<string name="date_time_picker_choose_date">Izvēlieties datumu</string>
<string name="people_picker_sample_label">Etiķete</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Избрано</string>
<string name="date_time_picker_start_time">Време на започнување</string>
<string name="date_time_picker_end_time">Време на завршување</string>
<string name="date_time_picker_start_date">Датум на започнување</string>
<string name="date_time_picker_end_date">Датум на завршување</string>
<string name="date_time_picker_choose_time">Изберете време</string>
<string name="date_time_picker_choose_date">Изберете датум</string>
<string name="people_picker_sample_label">Етикета</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">തിരഞ്ഞെടുത്തു</string>
<string name="date_time_picker_start_time">ആരംഭിക്കുന്ന സമയം</string>
<string name="date_time_picker_end_time">അവസാനിക്കുന്ന സമയം</string>
<string name="date_time_picker_start_date">ആരംഭിക്കുന്ന തീയതി</string>
<string name="date_time_picker_end_date">അവസാനിക്കുന്ന തീയതി</string>
<string name="date_time_picker_choose_time">സമയം നോക്കിയെടുക്കുക</string>
<string name="date_time_picker_choose_date">തീയതി നോക്കിയെടുക്കുക</string>
<string name="people_picker_sample_label">ലേബൽ</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Dipilih</string>
<string name="date_time_picker_start_time">Masa mula</string>
<string name="date_time_picker_end_time">Masa tamat</string>
<string name="date_time_picker_start_date">Tarikh mula</string>
<string name="date_time_picker_end_date">Tarikh tamat</string>
<string name="date_time_picker_choose_time">Pilih masa</string>
<string name="date_time_picker_choose_date">Pilih tarikh</string>
<string name="people_picker_sample_label">Label</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Merket</string>
<string name="date_time_picker_start_time">Starttidspunkt</string>
<string name="date_time_picker_end_time">Sluttidspunkt</string>
<string name="date_time_picker_start_date">Startdato</string>
<string name="date_time_picker_end_date">Sluttdato</string>
<string name="date_time_picker_choose_time">Velg tidspunkt</string>
<string name="date_time_picker_choose_date">Velg dato</string>
<string name="people_picker_sample_label">Etikett</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Geselecteerd</string>
<string name="date_time_picker_start_time">Begintijd</string>
<string name="date_time_picker_end_time">Eindtijd</string>
<string name="date_time_picker_start_date">Begindatum</string>
<string name="date_time_picker_end_date">Einddatum</string>
<string name="date_time_picker_choose_time">Tijd kiezen</string>
<string name="date_time_picker_choose_date">Datum kiezen</string>
<string name="people_picker_sample_label">Label</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Merkt</string>
<string name="date_time_picker_start_time">Starttidspunkt</string>
<string name="date_time_picker_end_time">Sluttidspunkt</string>
<string name="date_time_picker_start_date">Startdato</string>
<string name="date_time_picker_end_date">Sluttdato</string>
<string name="date_time_picker_choose_time">Vel tidspunkt</string>
<string name="date_time_picker_choose_date">Vel dato</string>
<string name="people_picker_sample_label">Etikett</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Zaznaczone</string>
<string name="date_time_picker_start_time">Godzina rozpoczęcia</string>
<string name="date_time_picker_end_time">Godzina zakończenia</string>
<string name="date_time_picker_start_date">Data rozpoczęcia</string>
<string name="date_time_picker_end_date">Data zakończenia</string>
<string name="date_time_picker_choose_time">Wybierz czas</string>
<string name="date_time_picker_choose_date">Wybierz datę</string>
<string name="people_picker_sample_label">Etykieta</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Selecionado</string>
<string name="date_time_picker_start_time">Hora de início</string>
<string name="date_time_picker_end_time">Hora de término</string>
<string name="date_time_picker_start_date">Data de início</string>
<string name="date_time_picker_end_date">Data de término</string>
<string name="date_time_picker_choose_time">Escolher hora</string>
<string name="date_time_picker_choose_date">Escolher data</string>
<string name="people_picker_sample_label">Rótulo</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Selecionado</string>
<string name="date_time_picker_start_time">Hora de início</string>
<string name="date_time_picker_end_time">Hora de fim</string>
<string name="date_time_picker_start_date">Data de início</string>
<string name="date_time_picker_end_date">Data de fim</string>
<string name="date_time_picker_choose_time">Selecionar hora</string>
<string name="date_time_picker_choose_date">Selecionar data</string>
<string name="people_picker_sample_label">Etiqueta</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Selectat</string>
<string name="date_time_picker_start_time">Ora de început</string>
<string name="date_time_picker_end_time">Ora de sfârșit</string>
<string name="date_time_picker_start_date">Data de început</string>
<string name="date_time_picker_end_date">Data de sfârșit</string>
<string name="date_time_picker_choose_time">Alegeți ora</string>
<string name="date_time_picker_choose_date">Alegeți data</string>
<string name="people_picker_sample_label">Etichetă</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Выбрано</string>
<string name="date_time_picker_start_time">Время начала</string>
<string name="date_time_picker_end_time">Время окончания</string>
<string name="date_time_picker_start_date">Дата начала</string>
<string name="date_time_picker_end_date">Дата окончания</string>
<string name="date_time_picker_choose_time">Выберите время</string>
<string name="date_time_picker_choose_date">Выберите дату</string>
<string name="people_picker_sample_label">Метка</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Vybraté</string>
<string name="date_time_picker_start_time">Čas začatia</string>
<string name="date_time_picker_end_time">Čas ukončenia</string>
<string name="date_time_picker_start_date">Dátum začatia</string>
<string name="date_time_picker_end_date">Dátum ukončenia</string>
<string name="date_time_picker_choose_time">Vyberte čas</string>
<string name="date_time_picker_choose_date">Vyberte dátum</string>
<string name="people_picker_sample_label">Označenie</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Izbrano</string>
<string name="date_time_picker_start_time">Čas začetka</string>
<string name="date_time_picker_end_time">Čas konca</string>
<string name="date_time_picker_start_date">Začetni datum</string>
<string name="date_time_picker_end_date">Končni datum</string>
<string name="date_time_picker_choose_time">Izberite uro</string>
<string name="date_time_picker_choose_date">Izberite datum</string>
<string name="people_picker_sample_label">Oznaka</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">E përzgjedhur</string>
<string name="date_time_picker_start_time">Ora e fillimit</string>
<string name="date_time_picker_end_time">Ora e mbarimit</string>
<string name="date_time_picker_start_date">Data e fillimit</string>
<string name="date_time_picker_end_date">Data e mbarimit</string>
<string name="date_time_picker_choose_time">Zgjidh orën</string>
<string name="date_time_picker_choose_date">Zgjidh datën</string>
<string name="people_picker_sample_label">Etiketa</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Изабрано</string>
<string name="date_time_picker_start_time">Време почетка</string>
<string name="date_time_picker_end_time">Време завршетка</string>
<string name="date_time_picker_start_date">Датум почетка</string>
<string name="date_time_picker_end_date">Датум завршетка</string>
<string name="date_time_picker_choose_time">Одаберите време</string>
<string name="date_time_picker_choose_date">Одаберите датум</string>
<string name="people_picker_sample_label">Ознака</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Markerat</string>
<string name="date_time_picker_start_time">Starttid</string>
<string name="date_time_picker_end_time">Sluttid</string>
<string name="date_time_picker_start_date">Startdatum</string>
<string name="date_time_picker_end_date">Slutdatum</string>
<string name="date_time_picker_choose_time">Välj tid</string>
<string name="date_time_picker_choose_date">Välj datum</string>
<string name="people_picker_sample_label">Etikett</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Imeteuliwa</string>
<string name="date_time_picker_start_time">Wakati wa kuanza</string>
<string name="date_time_picker_end_time">Wakati wa kuisha</string>
<string name="date_time_picker_start_date">Tarehe ya kuanza</string>
<string name="date_time_picker_end_date">Tarehe ya mwisho</string>
<string name="date_time_picker_choose_time">Chagua wakati</string>
<string name="date_time_picker_choose_date">Chagua tarehe</string>
<string name="people_picker_sample_label">Lebo</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">தேர்ந்தெடுக்கப்பட்டது</string>
<string name="date_time_picker_start_time">தொடக்க நேரம்</string>
<string name="date_time_picker_end_time">முடிவு நேரம்</string>
<string name="date_time_picker_start_date">தொடக்கத் தேதி</string>
<string name="date_time_picker_end_date">முடிவுத் தேதி</string>
<string name="date_time_picker_choose_time">நேரத்தைத் தேர்வுசெய்க</string>
<string name="date_time_picker_choose_date">தேதியைத் தேர்வுசெய்க</string>
<string name="people_picker_sample_label">சிட்டை இணை</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">ఎంచుకోబడింది</string>
<string name="date_time_picker_start_time">ప్రారంభ సమయం</string>
<string name="date_time_picker_end_time">ముగింపు సమయం</string>
<string name="date_time_picker_start_date">ప్రారంభ తేదీ</string>
<string name="date_time_picker_end_date">ముగింపు తేది</string>
<string name="date_time_picker_choose_time">సమయాన్ని ఎంచుకోండి</string>
<string name="date_time_picker_choose_date">తేదీని ఎంచుకోండి</string>
<string name="people_picker_sample_label">లేబుల్</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">เลือกแล้ว</string>
<string name="date_time_picker_start_time">เวลาเริ่มต้น</string>
<string name="date_time_picker_end_time">เวลาสิ้นสุด</string>
<string name="date_time_picker_start_date">วันที่เริ่มต้น</string>
<string name="date_time_picker_end_date">วันที่สิ้นสุด</string>
<string name="date_time_picker_choose_time">เลือกเวลา</string>
<string name="date_time_picker_choose_date">เลือกวันที่</string>
<string name="people_picker_sample_label">ป้ายชื่อ</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Seçildi</string>
<string name="date_time_picker_start_time">Başlangıç saati</string>
<string name="date_time_picker_end_time">Bitiş saati</string>
<string name="date_time_picker_start_date">Başlangıç tarihi</string>
<string name="date_time_picker_end_date">Bitiş tarihi</string>
<string name="date_time_picker_choose_time">Saat seçin</string>
<string name="date_time_picker_choose_date">Tarih seçin</string>
<string name="people_picker_sample_label">Etiket</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Вибрано</string>
<string name="date_time_picker_start_time">Час початку</string>
<string name="date_time_picker_end_time">Час завершення</string>
<string name="date_time_picker_start_date">Дата початку</string>
<string name="date_time_picker_end_date">Дата завершення</string>
<string name="date_time_picker_choose_time">Виберіть час</string>
<string name="date_time_picker_choose_date">Виберіть дату</string>
<string name="people_picker_sample_label">Мітка</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Tanlangan</string>
<string name="date_time_picker_start_time">Boshlanish vaqti</string>
<string name="date_time_picker_end_time">Tugash vaqti</string>
<string name="date_time_picker_start_date">Boshlanish sanasi</string>
<string name="date_time_picker_end_date">Tugash sanasi</string>
<string name="date_time_picker_choose_time">Vaqtni tanlang</string>
<string name="date_time_picker_choose_date">Sanani tanlang</string>
<string name="people_picker_sample_label">Yorliq</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">Đã chọn</string>
<string name="date_time_picker_start_time">Thời gian bắt đầu</string>
<string name="date_time_picker_end_time">Thời gian kết thúc</string>
<string name="date_time_picker_start_date">Ngày bắt đầu</string>
<string name="date_time_picker_end_date">Ngày kết thúc</string>
<string name="date_time_picker_choose_time">Chọn thời gian</string>
<string name="date_time_picker_choose_date">Chọn ngày</string>
<string name="people_picker_sample_label">Nhãn</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">已选定</string>
<string name="date_time_picker_start_time">开始时间</string>
<string name="date_time_picker_end_time">结束时间</string>
<string name="date_time_picker_start_date">开始日期</string>
<string name="date_time_picker_end_date">结束日期</string>
<string name="date_time_picker_choose_time">选择时间</string>
<string name="date_time_picker_choose_date">选择日期</string>
<string name="people_picker_sample_label">标签</string>

Просмотреть файл

@ -18,6 +18,8 @@
<string name="accessibility_selected">已選取</string>
<string name="date_time_picker_start_time">開始時間</string>
<string name="date_time_picker_end_time">結束時間</string>
<string name="date_time_picker_start_date">開始日期</string>
<string name="date_time_picker_end_date">結束日期</string>
<string name="date_time_picker_choose_time">選擇時間</string>
<string name="date_time_picker_choose_date">選擇日期</string>
<string name="people_picker_sample_label">標籤</string>

Просмотреть файл

@ -29,6 +29,13 @@
<!--DateTimePicker-->
<dimen name="uifabric_date_time_picker_padding">16dp</dimen>
<dimen name="uifabric_date_time_picker_date_internal_min_width">160dp</dimen>
<dimen name="uifabric_date_time_picker_month_internal_min_width">100dp</dimen>
<dimen name="uifabric_date_time_picker_year_internal_min_width">80dp</dimen>
<dimen name="uifabric_date_time_picker_fading_edge_length">50dp</dimen>
<dimen name="uifabric_date_time_picker_internal_min_width">48dp</dimen>
<dimen name="uifabric_date_time_picker_max_height">336dp</dimen>
<dimen name="uifabric_date_time_picker_padding_right">8dp</dimen>
<!--Dialog-->
<dimen name="uifabric_dialog_background_light_shadow_width">8dp</dimen>
@ -37,13 +44,6 @@
<dimen name="uifabric_resizable_dialog_card_elevation">2dp</dimen>
<dimen name="uifabric_resizable_dialog_card_tools_width">300dp</dimen>
<!--NumberPicker-->
<dimen name="uifabric_number_picker_date_internalMinWidth">160dp</dimen>
<dimen name="uifabric_number_picker_fading_edge_length">50dp</dimen>
<dimen name="uifabric_number_picker_internal_min_width">48dp</dimen>
<dimen name="uifabric_number_picker_max_height">336dp</dimen>
<dimen name="uifabric_number_picker_padding_right">8dp</dimen>
<!--PeoplePicker-->
<dimen name="uifabric_people_picker_accessibility_search_constraint_extra_space">5dp</dimen>
<!--30dp is an approximation of how much space 3 digits take up for the count span-->

Просмотреть файл

@ -30,9 +30,17 @@
<!-- *** DateTimePicker *** -->
<!--date picker tab title for start time range-->
<string name="date_time_picker_start_time">Start time</string>
<!--date picker tab title for end time range-->
<string name="date_time_picker_end_time">End time</string>
<!--date picker tab title for start date range-->
<string name="date_time_picker_start_date">Start date</string>
<!--date picker tab title for end date range-->
<string name="date_time_picker_end_date">End date</string>
<!--date picker dialog title for time selection-->
<string name="date_time_picker_choose_time">Choose time</string>
<!--date picker dialog title for date selection-->
<string name="date_time_picker_choose_date">Choose date</string>
<!-- *** PeoplePicker *** -->

Просмотреть файл

@ -38,13 +38,13 @@
<item name="allowKeyboardInput">false</item>
<item name="android:orientation">vertical</item>
<item name="android:fadingEdge">vertical</item>
<item name="android:fadingEdgeLength">@dimen/uifabric_number_picker_fading_edge_length</item>
<item name="android:fadingEdgeLength">@dimen/uifabric_date_time_picker_fading_edge_length</item>
<item name="solidColor">@android:color/transparent</item>
<item name="internalMinWidth">@dimen/uifabric_number_picker_internal_min_width</item>
<item name="internalMaxHeight">@dimen/uifabric_number_picker_max_height</item>
<item name="internalMinWidth">@dimen/uifabric_date_time_picker_internal_min_width</item>
<item name="internalMaxHeight">@dimen/uifabric_date_time_picker_max_height</item>
<item name="selectorWheelItemCount">7</item>
<item name="textAlign">center</item>
<item name="android:paddingRight">@dimen/uifabric_number_picker_padding_right</item>
<item name="android:paddingRight">@dimen/uifabric_date_time_picker_padding_right</item>
</style>
<!--PeoplePicker-->