Android中两个EditText选自动补全内容时同步填充问题排查
问题原因与解决方案
这是Android系统自动填充服务的“过度热心”导致的——两个EditText的inputType都设为textPersonName,系统会判定它们属于同一类个人信息(比如联系人姓名),当你选择自动建议填充其中一个时,自动填充服务会把内容同步填充到同类型的输入框里;而手动输入时不会触发这个逻辑,所以表现正常。
解决办法
方法1:明确区分自动填充提示
给两个EditText分别设置不同的autofillHints,告诉系统它们的用途不一样:
<EditText android:id="@+id/edtFatherName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="Father Name" android:inputType="textPersonName|textCapWords" android:autofillHints="fatherName"/> <EditText android:id="@+id/edtMotherName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/edtFatherName" android:hint="Mother Name" android:inputType="textPersonName|textCapWords" android:autofillHints="motherName"/>
方法2:直接禁用自动填充
如果不需要自动填充功能,给每个EditText加上importantForAutofill="no":
<EditText android:id="@+id/edtFatherName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="Father Name" android:inputType="textPersonName|textCapWords" android:importantForAutofill="no"/> <EditText android:id="@+id/edtMotherName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/edtFatherName" android:hint="Mother Name" android:inputType="textPersonName|textCapWords" android:importantForAutofill="no"/>
操作步骤说明
- 第一步:点击“Father Name”输入框,系统弹出联系人姓名类的自动建议列表
- 第二步:选择列表中的某一姓名,该姓名被填充到“Father Name”输入框中
- 第三步:“Mother Name”输入框也被自动填充了相同的姓名
内容的提问来源于stack exchange,提问作者Lakshmi
相关产品推荐
相关产品推荐

