在Activity调用了监听焦点变化和点击监听接口,对于其中的一个EditText,设置其进行焦点变化监听和点击监听,在EditText不处于焦点的情况下,点击这个EditText,发现onClick那里没有执行,只是在onFocusChange执行,请教大伙,这个是怎么回事?

解决方案 »

  1.   

    EditText不支持onClick,请使用onFocusChange的hasFocus=true来代替点击如果你的控件不需要弹出键盘,请使用TextView。focusableInTouchMode这个属性没多大用
      

  2.   

    我刚才试了一下,发现EditText是有响应onClick的,先设置EditText监听onClick和onFocusChange,还有就是设置监听键盘输入为null,焦点在别处,点击这个EditText是响应onFocusChange而没有响应onClick,但如果焦点本来就在这个EditText的话,再点击这个EditText是响应onClick,而不响应onFocusChange;我觉得从焦点从别处,点击这个EditText的话,应该响应onClick和onFocusChange比较对,但事实上只响应onFocusChange
      

  3.   

    我刚才试了一下,发现EditText是有响应onClick的,先设置EditText监听onClick和onFocusChange,还有就是设置监听键盘输入为null,焦点在别处,点击这个EditText是响应onFocusChange而没有响应onClick,但如果焦点本来就在这个EditText的话,再点击这个EditText是响应onClick,而不响应onFocusChange;我觉得从焦点从别处,点击这个EditText的话,应该响应onClick和onFocusChange比较对,但事实上只响应onFocusChange
    嗯没注意再次点击,源码里面有写。
    看你需求啥样,EditText的点击监听一般用不到
      

  4.   

    点击事件必须先获取到焦点,这叫事件传递。
    你可以自行查找相关资料了解一下。
    看看View和ViewGroup的源码,尤其是事件相关方法