首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android -如何防止视图焦点更改?

问Android -如何防止视图焦点更改?
EN

Stack Overflow用户
提问于 2012-04-15 23:03:18
回答 3查看 6.1K关注 0票数 4

我想在我的控件(EditText)中实现一个类似于"beforeLosingFocus“事件的东西,并且我希望能够阻止焦点的改变,这样我的控件必须在用户输入允许值之前保持焦点。

我试图使用onFocusChange事件,但此事件在焦点更改后触发。此事件被激发两次(因为一个控件失去了焦点,而另一个控件获得了焦点)。

是否可以防止另一个控件以通用方式获得焦点?(因为焦点可以通过在另一个控件中轻触或单击“下一步”键来改变)

EN

回答 3

Stack Overflow用户

发布于 2017-09-29 22:00:26

代码语言:javascript
复制
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
        }
    ...
    }
票数 2
EN

Stack Overflow用户

发布于 2012-04-15 23:21:50

有两种方法可以做到这一点: 1)默认情况下,将所有其他视图的setFocusable属性设置为false。然后按照您的逻辑逐一启用它们。

2)调用onFocusChangedListener时,使用v.requestFocus()将焦点重新设置到您想要的视图上。

票数 1
EN

Stack Overflow用户

发布于 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中输入了文本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10163174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档