我在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一起提供。
而且,我看到很多问题都想关闭活动开始时的自动对焦。这让我更加困惑。以前有人遇到过这个吗?
1条答案
按热度按时间0vvn1miw1#
“虽然Android在Activity开始时会将焦点放在布局中的第一个文本字段”这句话在过去是正确的,但它可能不适用于所有当前版本的Android或所有类型的布局。
通常,当Activity在Android中启动时,系统会尝试将焦点赋予布局中第一个可聚焦的View。默认情况下,这通常是XML布局文件中的第一个EditText或TextInputLayout元素。但是,此行为可能会受到各种因素的影响,例如布局结构、其他可聚焦元素的存在以及各个视图的可聚焦性设置。
因此,通过在XML布局文件中设置
android:focusable
和android:focusableInTouchMode
属性或在代码中使用requestFocus()
方法来显式指定Activity的初始焦点始终是一个好的实践,这将确保用户的输入指向目标字段,并提供更好的用户体验。