Android开发经验笔记程序猿葵花宝典

EditText的焦点问题

2015-03-19  本文已影响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事件中设置的方法。

上一篇下一篇

猜你喜欢

热点阅读