EditText的焦点问题

作者: 陈利健 | 来源:发表于2015-03-19 18:34 被阅读977次

    有时候我们需要把一个EditText作为搜索框放在首页上,但一般而言EditText是默认获取焦点的,所以进入首页后EditText里面就会显示焦点,并且弹出输入法,交互非常恶劣。
    隐藏输入法很好解决,但如何让EditText不默认获取焦点涉及到点击事件,这里细细理一下。


    在XML中设置,让EditText的父级容器上默认获取焦点,即:
    android:focusable="true"
    android:focusableInTouchMode="true"
    于是,进入首页之后,焦点默认在父级容器上,EditText里面不会显示光标,用户体验上升。


    但是,我们需求当点击父级容器的时候,需要启动搜索,即:让EditText获得焦点,还需要给EditText设置一些动画。我们可以使用editView.requsetFocus使EditView获得焦点。
    但现实是我们需要两次点击才会成功。这是因为第一次点击,焦点变化,第二次点击,才是真正触发onclick事件。


    这里提供另一种方法,给EditText设置监听事件OnFocusChangeListener。就是将所有启动搜索的事件,包括动画等放在监听事件里面:

    public void onFocusChange(View v, boolean hasFocus) {
        if(hasFocus){
    
        }else{
    
        }
    }
    

    通过EditText是否获得焦点,直接来做出一些后续事件。这样,当第一次点击,焦点变化的时候,后续的动画反应就出来了。取代onClick事件中设置的方法。

    相关文章

      网友评论

        本文标题:EditText的焦点问题

        本文链接:https://www.haomeiwen.com/subject/rbswxttx.html