kotlin 如何在赋予文本focusable = false后再次聚焦编辑文本

iyfjxgzm  于 2023-04-12  发布在  Kotlin
关注(0)|答案(1)|浏览(231)

我有一个编辑文本。我在xml布局中设置了focusable = false。但是当我点击一个按钮时,我希望它再次获得焦点,我现在可以编辑文本。但是即使设置了focusable = true,我也无法做到这一点。

<EditText
        android:id="@+id/et_display_name"
        android:layout_width="0dp"
        android:layout_height="44dp"
        android:layout_marginTop="40dp"
        android:layout_marginStart="16dp"
        android:layout_marginEnd="16dp"
        android:background="@drawable/profile_shape"
        android:text="Display Name"
        android:textColor="@color/grey"
        android:inputType="textPersonName"
        android:cursorVisible="false"
        android:focusable="false"
        android:maxLines="1"
        android:maxLength="30"
        android:textSize="20sp"
        android:gravity="fill"
        android:paddingStart="16dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/iv_profilePic" />

即使在这样做之后,我也无法编辑文本,因为光标不可见,键盘也没有弹出。

etDisplayName.focusable = View.FOCUSABLE
        etDisplayName.requestFocus()
        etDisplayName.isCursorVisible = true
xoshrz7s

xoshrz7s1#

要使EditText再次可编辑,您需要将focusable属性设置为true,并将cursorVisible属性设置为true。您可以在Activity或片段中以编程方式完成此操作。
下面是一个示例代码片段:

// Get reference to the EditText
EditText etDisplayName = findViewById(R.id.et_display_name);

// Set focusable and cursorVisible properties to true
etDisplayName.setFocusable(true);
etDisplayName.setCursorVisible(true);

// Request focus on the EditText
etDisplayName.requestFocus();

使用此代码,您应该能够点击按钮,EditText将再次变为可编辑状态,光标可见,键盘弹出。

相关问题