MaterialTimePicker 需要用户点击三次
MaterialTimePicker requires user to click three times
我正在使用 Kotlin 开发本机 Android 应用程序,目前正在尝试使用 MaterialTimePicker 来填充 EditText 的时间。我有一个用户体验问题,用户需要单击三次才能显示键盘。
- 第一次点击显示MaterialTimePicker:
First click displays the MaterialTimePicker
- 第二次点击聚焦 MaterialTimePicker:
Second click focuses the MaterialTimePicker
- 第三次点击显示键盘:
Third click displays the keyboard
这是处理 EditText 的 onClick 侦听器的代码:
binding.startTimeTextInputEditText.setOnClickListener {
val (hours, minutes) = Functions.getTimeSplit(binding.startTimeTextInputEditText.text.toString())
val picker = setupTimePicker(hours, minutes, R.string.title_start_time, false)
}
下面是设置和显示 MaterialTimePicker 的代码:
private fun setupTimePicker(
hours: Int,
minutes: Int,
titleTime: Int,
force24Hours: Boolean
): MaterialTimePicker {
val isSystem24Hour = is24HourFormat(this)
val clockFormat = if (!force24Hours) {
if (isSystem24Hour) TimeFormat.CLOCK_24H else TimeFormat.CLOCK_12H
} else {
TimeFormat.CLOCK_24H
}
val picker = MaterialTimePicker.Builder()
.setTimeFormat(clockFormat)
.setTitleText(titleTime)
.setInputMode(INPUT_MODE_KEYBOARD)
.setHour(hours)
.setMinute(minutes)
.build()
picker.show(supportFragmentManager, picker.toString())
return picker
}
我已经尝试过让 EditText 不可聚焦等操作:
android:focusableInTouchMode="false"
这里是 EditText 的 XML 代码:
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/startTimeTextInputLayout"
style="@style/TextInput.Dark"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="4dp"
android:focusableInTouchMode="false"
android:layout_weight="1"
app:errorTextAppearance="@style/errorAppearance"
app:hintTextAppearance="@style/Hint.Dark">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/startTimeTextInputEditText"
style="@style/TextInputEditText.NotClickable.Dark"
android:layout_width="match_parent"
android:focusableInTouchMode="false"
android:layout_height="wrap_content"
android:background="@drawable/background_rounded_input_text"
android:hint="@string/hint_start_time"
android:inputType="text" />
</com.google.android.material.textfield.TextInputLayout>
我只想点击两次即可实现相同的流程:
- 供用户点击EditText,显示MaterialTimePicker。
- 再次单击 select 小时或分钟,然后开始在键盘上输入。
我自己 运行 进入了这个两次点击要求,它似乎是 material-components-android 库中的一个错误。此问题已在版本 1.5.0-alpha05.
中修复
因此,将库依赖项更新到版本 1.5.0-alpha05 或更高版本应该可以解决您的问题。
将您的 Material 组件版本至少升级到 1.6.0-alpha01。如果您单击“小时”或“分钟”字段,它将立即显示键盘
我正在使用 Kotlin 开发本机 Android 应用程序,目前正在尝试使用 MaterialTimePicker 来填充 EditText 的时间。我有一个用户体验问题,用户需要单击三次才能显示键盘。
- 第一次点击显示MaterialTimePicker: First click displays the MaterialTimePicker
- 第二次点击聚焦 MaterialTimePicker: Second click focuses the MaterialTimePicker
- 第三次点击显示键盘: Third click displays the keyboard
这是处理 EditText 的 onClick 侦听器的代码:
binding.startTimeTextInputEditText.setOnClickListener {
val (hours, minutes) = Functions.getTimeSplit(binding.startTimeTextInputEditText.text.toString())
val picker = setupTimePicker(hours, minutes, R.string.title_start_time, false)
}
下面是设置和显示 MaterialTimePicker 的代码:
private fun setupTimePicker(
hours: Int,
minutes: Int,
titleTime: Int,
force24Hours: Boolean
): MaterialTimePicker {
val isSystem24Hour = is24HourFormat(this)
val clockFormat = if (!force24Hours) {
if (isSystem24Hour) TimeFormat.CLOCK_24H else TimeFormat.CLOCK_12H
} else {
TimeFormat.CLOCK_24H
}
val picker = MaterialTimePicker.Builder()
.setTimeFormat(clockFormat)
.setTitleText(titleTime)
.setInputMode(INPUT_MODE_KEYBOARD)
.setHour(hours)
.setMinute(minutes)
.build()
picker.show(supportFragmentManager, picker.toString())
return picker
}
我已经尝试过让 EditText 不可聚焦等操作:
android:focusableInTouchMode="false"
这里是 EditText 的 XML 代码:
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/startTimeTextInputLayout"
style="@style/TextInput.Dark"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="4dp"
android:focusableInTouchMode="false"
android:layout_weight="1"
app:errorTextAppearance="@style/errorAppearance"
app:hintTextAppearance="@style/Hint.Dark">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/startTimeTextInputEditText"
style="@style/TextInputEditText.NotClickable.Dark"
android:layout_width="match_parent"
android:focusableInTouchMode="false"
android:layout_height="wrap_content"
android:background="@drawable/background_rounded_input_text"
android:hint="@string/hint_start_time"
android:inputType="text" />
</com.google.android.material.textfield.TextInputLayout>
我只想点击两次即可实现相同的流程:
- 供用户点击EditText,显示MaterialTimePicker。
- 再次单击 select 小时或分钟,然后开始在键盘上输入。
我自己 运行 进入了这个两次点击要求,它似乎是 material-components-android 库中的一个错误。此问题已在版本 1.5.0-alpha05.
中修复因此,将库依赖项更新到版本 1.5.0-alpha05 或更高版本应该可以解决您的问题。
将您的 Material 组件版本至少升级到 1.6.0-alpha01。如果您单击“小时”或“分钟”字段,它将立即显示键盘