surfaceview在fragment中切换回来后会失去焦点,导致点击事件需要第二次才能生效

来源:互联网 发布:java多线程网络编程 编辑:程序博客网 时间:2024/05/19 13:19

最近有个项目用到了tabfragment,其中一个fragment中包含一个surfaceview在不断绘图,并且赋予了点击监听,但是当从其他fragment切回来时,在去点击他,onClick并没有响应,需要点击两次才会响应,不知道是为什么,后面猜测可能是焦点获取问题,surfaceview没拿到焦点,所以监听不到。所以重写了surfaceview的Ontouch方法。

@Overridepublic boolean onTouchEvent(MotionEvent event) {    switch (event.getAction()){        case MotionEvent.ACTION_DOWN:            requestFocus();//在点下后,立马赋予焦点,等ACTION_UP时可以响应onClick事件            break;    }    return super.onTouchEvent(event);}
卧槽,onClick可以响应了,真的是奇葩。至于具体为什么切换fragment后surfaceview会失去焦点,要点击一次后才能获取,还是不明白。有大神路过的话,就帮忙解下惑吧!

哦,对了,在Activity中,我用了一个跑马灯效果的textview,并且重写下面两个方法,让他‘欺骗’android一直获取‘焦点’以持续内容滚动状态,不知道是不是冲突了!

@Overrideprotected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {    super.onFocusChanged(true, direction, previouslyFocusedRect);}@Overridepublic boolean isFocused() {    return true;}

阅读全文
0 0