TextInputEditText需要2次点击才能触发关联的侦听器

时间:2018-03-17 14:50:49

标签: android onclicklistener android-datepicker android-textinputlayout android-textinputedittext

我有一个带有一些输入字段的视图,其中一个是TextInputEditTextdatepicker相关联,当选择字段时会显示该字段。问题是,在第一次点按时,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。如何在第一次点击时获得所有活动?

0 个答案:

没有答案