我想在我的控件(EditText)中实现一个类似于"beforeLosingFocus“事件的东西,并且我希望能够阻止焦点的改变,这样我的控件必须在用户输入允许值之前保持焦点。
我试图使用onFocusChange事件,但此事件在焦点更改后触发。此事件被激发两次(因为一个控件失去了焦点,而另一个控件获得了焦点)。
是否可以防止另一个控件以通用方式获得焦点?(因为焦点可以通过在另一个控件中轻触或单击“下一步”键来改变)
发布于 2017-09-29 22:00:26
editText.setOnEditorActionListener {
...
if (actionId == EditorInfo.IME_ACTION_NEXT) {
return true // if you want to ignore IME_ACTION_NEXT
return false // if you want to lose focus and go further
}
...
}发布于 2012-04-15 23:21:50
有两种方法可以做到这一点: 1)默认情况下,将所有其他视图的setFocusable属性设置为false。然后按照您的逻辑逐一启用它们。
2)调用onFocusChangedListener时,使用v.requestFocus()将焦点重新设置到您想要的视图上。
发布于 2012-04-15 23:08:27
用"in activity“更改覆盖您的EditText的OnFocusChangeListener,并覆盖导航按钮的OnClicks以执行完整性测试。
编辑(如果我校对它会有帮助,对不起)
您提到知道如何覆盖EditText中的onFocusChange(View view, boolean state),通过检查if(state == false)来强制用户输入文本。但您也发现,当用户单击导航按钮(如Next)时,在启动新活动之前从不调用onFocusChange。
因此,如果您有多个EditText (例如用户名和密码),请保留onFocusChange,并在Next按钮的onClickListener中添加检查,以在您开始新活动之前验证用户是否在您的EditText中输入了文本。
https://stackoverflow.com/questions/10163174
复制相似问题