“虽然Android在Activity开始时将焦点放在布局中的第一个文本字段”这句话是否仍然有效?

rbl8hiat  于 2023-04-28  发布在  Android
关注(0)|答案(1)|浏览(100)

我在Handle输入法可见性部分找到了subject语句
我想尝试在活动开始时打开我的键盘。然而,我唯一的EditText并不关注活动开始。我的布局如下:

<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<EditText
    android:id="@+id/search"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="Hint"
    android:inputType="text"
    android:imeOptions="actionSend"
    android:focusable="true"
    android:focusableInTouchMode="true">

</EditText>

</androidx.constraintlayout.widget.ConstraintLayout>

我想知道这是不是因为最新的Android Studio视图调色板在我将EditText拖到布局中时删除了requestFocus标签。我有一些记忆,requestFocus标签默认情况下确实与EditText一起提供。
而且,我看到很多问题都想关闭活动开始时的自动对焦。这让我更加困惑。以前有人遇到过这个吗?

0vvn1miw

0vvn1miw1#

“虽然Android在Activity开始时会将焦点放在布局中的第一个文本字段”这句话在过去是正确的,但它可能不适用于所有当前版本的Android或所有类型的布局。
通常,当Activity在Android中启动时,系统会尝试将焦点赋予布局中第一个可聚焦的View。默认情况下,这通常是XML布局文件中的第一个EditText或TextInputLayout元素。但是,此行为可能会受到各种因素的影响,例如布局结构、其他可聚焦元素的存在以及各个视图的可聚焦性设置。
因此,通过在XML布局文件中设置android:focusableandroid:focusableInTouchMode属性或在代码中使用requestFocus()方法来显式指定Activity的初始焦点始终是一个好的实践,这将确保用户的输入指向目标字段,并提供更好的用户体验。

相关问题