我有一个带有一些输入字段的视图,其中一个是TextInputEditText
与datepicker
相关联,当选择字段时会显示该字段。问题是,在第一次点按时,TextInputEditText
字段会获得焦点,需要第二次点击才能显示datepicker
。
这是字段的定义方式
<android.support.design.widget.TextInputLayout
android:id="@+id/wExpiresAt"
style="@style/AppTheme.TextInputLayout"
android:layout_width="180dp"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
app:errorTextAppearance="@style/AppTheme.Text.ErrorText"
app:hintTextAppearance="@style/AppTheme.Text.HintText"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/wMessage">
<android.support.design.widget.TextInputEditText
android:id="@+id/tvExpiresAt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/tv_pick_date_ph"
android:imeOptions="actionNext"
android:textSize="18sp" />
</android.support.design.widget.TextInputLayout>
在活动内部:
val mExpiresAt: TextInputEditText = findViewById(R.id.tvExpiresAt)
mExpiresAt!!.setOnClickListener {
val cal = Calendar.getInstance()
val year = cal.get(Calendar.YEAR)
val month = cal.get(Calendar.MONTH)
val day = cal.get(Calendar.DAY_OF_MONTH)
val dialog = DatePickerDialog(
this@NewMessageActivity,
android.R.style.Theme_Material_Light_Dialog_MinWidth,
mDateSetListener,
year, month, day)
dialog.show()
}
我的猜测是问题是由包裹TextInputLayout
的{{1}}引起的,第一次点击会触发将提示字符串从文本字段移动到顶部的动画,并将焦点放在字段本身,第二次点击触发与文本字段关联的监听器,并出现TextInputEditText
。如何在第一次点击时获得所有活动?