EditText的requestFocus()在运行android P(API 28)的设备上不起作用
我正在使用EditText的requestFocus()在运行android P(API 28)的设备上不起作用,android,Android,我正在使用EditText的来接受OTP,在OTP中,用户在字段中输入一个数字后,将注意力集中在下一个EditText,依此类推。它可以在所有设备上正常工作但在运行android OS P的设备上,即API 28,requestFocus()不起作用,并且用户无法在连续的editText中输入数字,因为焦点不会自动移动 以下是代码-默认情况下,禁用所有EditText的,以防止打开系统键盘。我正在使用自己的CustomKeybaord接受数字。然而,除了安卓P,它还能工作 mEtCode1.ad
EditText的
来接受OTP,在OTP中,用户在字段中输入一个数字后,将注意力集中在下一个EditText
,依此类推。它可以在所有设备上正常工作但在运行android OS P的设备上,即API 28,requestFocus()
不起作用,并且用户无法在连续的editText
中输入数字,因为焦点不会自动移动
以下是代码-默认情况下,禁用所有EditText的
,以防止打开系统键盘。我正在使用自己的CustomKeybaord
接受数字。然而,除了安卓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) {
}
});
请帮我做这个
谢谢,请提前这是方法的官方文档。它在那里声明,它仅在您想要聚焦的所需视图已启用、大小、可见、可聚焦且可聚焦到触摸模式时才起作用 我有完全相同的问题。我使用数据绑定来设置EditText的启用状态。我意识到requestFocus不起作用,因为由于一些未知的原因,数据绑定无法及时启用我的textview 这是我的密码:
/*
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();
此外,如以下帖子所述:
请将可聚焦和可聚焦InTouchMode也设置为true
简言之,我的观点是确保您的编辑文本符合官方文件中提到的所有要求,以便请求Focus工作。我在使用Android p sdk的设备上的OTP屏幕也有同样的问题。问题是我将editText的高度和宽度设置为0dp,这在android P中是焦点禁用, 如Android P更改日志中的Android开发者页面所述: 面积为0(宽度或高度为0)的视图不再具有焦点
这是Android p的问题。对我有效的是以下代码块,所以在这里分享:
enterOtpTextFrame.postDelayed(Runnable {
enterOtpTextFrame.requestFocus()
}, 100
)
我们需要调用requestFocus,并使用postDelayed调用少量时间。在我的情况下,它是100毫秒。你能发布你的code@jle在我的例子中,它依赖于操作系统,对于其余的android操作系统版本,它工作正常。@Sniffer我只调用一行代码,即
onRequestFocus()
这不起作用,我没有关注EditText
。请在清单文件android:WindowsofInputMode=“StateAllwaysVisible”中检查这一点。谢谢它救了我一天。就是这样。非常感谢。带着我,带着我,带着我,带着我去寻找这个。非常感谢你。