如果未选择任何项目,带有公开下拉菜单的 TextInputLayout 不会 return 到其原始形式(提示中心垂直)

TextInputLayout with an exposed dropdown menu does not return to its original form (hint center vertical) if no item is selected

如果您打开下拉列表并且没有选择任何项目关闭下拉列表,提示将保留在顶部位置。 TextInputLayout 仅在焦点移动到另一个元素后才会 return 到其原始状态(提示垂直居中)。 XML:

<com.google.android.material.textfield.TextInputLayout
        android:id="@+id/hint"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        tools:hint="@string/register_children_child_name_hint"
        style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox.ExposedDropdownMenu"
        app:endIconDrawable="@drawable/ic_dropdown"
        app:boxStrokeWidth="0dp"
        app:boxStrokeWidthFocused="0dp"
        app:boxStrokeColor="@color/transparent"
        app:boxBackgroundColor="@color/black_5_new"
        app:boxCornerRadiusTopStart="5dp"
        app:boxCornerRadiusTopEnd="5dp"
        app:boxCornerRadiusBottomStart="5dp"
        app:boxCornerRadiusBottomEnd="5dp"
        app:hintTextColor="@color/gray_new">

        <AutoCompleteTextView
            android:id="@+id/edit_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="none"
            android:textAppearance="@style/NormalText"
            android:textSize="17sp"
            tools:ignore="LabelFor" />

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

如果下拉列表已关闭且未选择任何项目,我如何才能使其 return 恢复到原始状态? 我试过 clearFocus() 但没有用。

您可以使用类似的东西:

    AutoCompleteTextView autoCompleteTextView = ((AutoCompleteTextView)textinputlayout.getEditText());
    autoCompleteTextView.setAdapter(adapter);

    autoCompleteTextView.setOnDismissListener(new AutoCompleteTextView.OnDismissListener() {
        @Override
        public void onDismiss() {
            autoCompleteTextView.clearFocus();
        }
    });

我发现为什么在打开下拉列表时,TextInputLayout立即进入活动状态,而在关闭下拉列表时没有return回到原来的状态。我在我的代码中调用 setFocusableInTouchMode(true) 。当我删除此行时,一切正常。