EditText的焦点问题

有时候我们需要把一个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事件中设置的方法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,794评论 25 709
  • 很奇怪,我在给EditText设置setOnFocusChangeListener()监听,但是始终未能成功,焦点...
    jimdear阅读 516评论 2 1
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,607评论 0 17
  • 我不懂爱情到底是什么,是放手给予自由,还是终其一生陪伴在其左右,亦或是默默的守候着,在其生活中扮演着一个角色,一个...
    Mce大鱼阅读 244评论 0 0
  • 最近看书并不积极,却被“看书”这件事儿压的沉重。我是个自制力差的人,我归结源于打小没有养成学习习惯。我需要请教下我...
    金金心阅读 239评论 0 0