在安卓的TextInputEditText上,onClick事件无法被触发

4
我有以下的TextInputEditText。
<com.google.android.material.textfield.TextInputLayout
            android:focusableInTouchMode="true"
            android:id="@+id/from_textinput"
            style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="8dp"
            android:fontFamily="sans-serif"
            android:hint="@string/from"
            android:textColor="@color/colorDarkGrey"
            android:textColorHint="@color/colorDarkGrey"
            android:textSize="12sp"
            android:textStyle="normal"
            android:visibility="gone"
            app:boxCornerRadiusBottomEnd="5dp"
            app:boxCornerRadiusBottomStart="5dp"
            app:boxCornerRadiusTopEnd="5dp"
            app:boxCornerRadiusTopStart="5dp"
            app:boxStrokeColor="@color/colorPrimary"
            app:boxStrokeWidth="3dp"
            app:layout_constraintEnd_toStartOf="@+id/to_textinput"
            app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/doNotDisturbCheckBox">

            <com.google.android.material.textfield.TextInputEditText
                android:onClick="@{() -> viewModel.openFromTimePickerClicked()}"
                android:focusableInTouchMode="true"
                android:id="@+id/from_textedit"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:editable="false"
                android:text="@{viewModel.doNotDisturbFrom}"
                android:textSize="16sp" />

        </com.google.android.material.textfield.TextInputLayout>

第一次触摸时onClick未被触发,只有第二次触摸时才会被调用。

第一次点击是让它获得焦点, 第一次点击触发了onClick。

请问有人能告诉我如何在第一次点击时触发click事件吗?


尝试切换到“TextView”,因为它是只读的。 - Blackbelt
这可能会阻止浮动提示的工作,因为 TextInputLayout 专门寻找 EditText - Mike M.
@MikeM。是的,你是正确的。 - Amira Elsayed Ismail
@NathanHeadley,没有关于onFocus的XML方法。 - Amira Elsayed Ismail
@NathanHeadley 它显示以下消息 -> 在 com.google.android.material.textfield.TextInputEditText 上找不到带有lambda参数类型的属性 'android:onFocusChanged'的setter - Amira Elsayed Ismail
1个回答

8
from_textedit.setEnabled(true);
from_textedit.setTextIsSelectable(true);
from_textedit.setFocusable(false);
from_textedit.setFocusableInTouchMode(false);
from_textedit.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Log.d(TAG, "Edit Text is clicked");
    }
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接