我正在使用EditText's接受OTP,EditText一旦用户将数字输入到字段中,用户就会关注下一个OTP .它适用于所有设备.但是在运行Android OS P即API 28的设备上,requestFocus()无法正常工作,并且EditTexts由于焦点不会自动移动,因此用户无法输入连续数字.
这是代码 - 默认情况下EditText's都禁用以防止打开系统键盘.我用我自己CustomKeybaord接受数字.然而它除了Android P.它有效.
mEtCode1.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
Log.d("BEFORE_", charSequence.toString());
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
hideError(charSequence.toString());
if (!charSequence.toString().isEmpty()) {
mEtCode2.requestFocus();
mEtCode1.setBackground(getResources().getDrawable(R.drawable.verify_code_edit_text_background));
mEtCode2.setBackground(getResources().getDrawable(R.drawable.verify_code_edit_text_background));
mEtCode1.setEnabled(false);
}
}
@Override
public void afterTextChanged(Editable editable) {
}
});
Run Code Online (Sandbox Code Playgroud)
请在这件事上给予我帮助
先感谢您
使用Android P sdk的设备上的OTP屏幕出现相同的问题。问题是我将editText的高度和宽度设置为0dp,这是在android P中禁用焦点,如Android P更改日志中的Android开发人员页面所述: android-9.0-changes-28#ui-changes
区域为0(宽度或高度为0)的视图不再可聚焦。
这是requestFocus方法的官方文档。它指出,仅当您想要获得焦点的所需视图已启用、具有大小、可见、可聚焦且为 FocusableInTouchMode 时,它才有效。
我有完全相同的问题。我正在使用数据绑定来设置EditText 的启用状态。我意识到 requestFocus 不起作用,因为由于某些未知原因,数据绑定没有及时启用我的文本视图。
这是我的代码:
/*
setMyEditTextEnabled is my method to which my view is binded i.e.
android:enabled="@{vm.myEditTextEnabled, default=false}"
This worked for all version except Android P because it has
some timing issues with API 28 (not sure what)
*/
//binding.getVm().setMyEditTextEnabled(true);
/*
So to make it work, I am enabling my EditText directly and
it works for all versions.
*/
binding.myEditText.setEnabled(true);
binding.myEditText.requestFocus();
Run Code Online (Sandbox Code Playgroud)
另外,如以下帖子中所述:EditText requestFocus 不起作用 请设置focusable和focusableInTouchMode请同时
简而言之,我的观点是确保您的编辑文本满足官方文档中提到的所有要求,以便 requestFocus 正常工作。
| 归档时间: |
|
| 查看次数: |
2476 次 |
| 最近记录: |