先介绍一下系统的布局,在一个FrameLayout里有一个ListView和RelativeLayout(作为surfaceVuew的容器)。surfaceVuew位于屏幕底部,listView在它上面。主Activity的onCreate方法中加载SurfaceView(画出一个底部的界面,里面有固定的几个Bitmap,可以循环移动,每移动到某一个图标上弹出listView)与ListView(做弹出菜单,点击某一项进行特定的操作)。在操作listView的时候对按键进行监听,按上下键在listView子项里移动,按左右键退出listView,focus回到下面的surfaceView可以继续在Bitmap上循环移动。现在的问题是在listView弹出后按左右键都无效,不能返回到surfaceView, //初始化界面listView不可见,surfaceView获得焦点
this.listView.setFocusable(false);
this.listView.setVisibility(View.GONE);
this.container.addView(this.surfaceView);
this.surfaceView.requestFocus();
//移动后弹出listview,listView获得焦点
this.listView.setItemsCanFocus(true);
this.listView.setDividerHeight(0);
this.listView.setFocusable(true);
this.listView.setFocusableInTouchMode(true);
this.listView.requestFocus();
this.listView.setVisibility(View.VISIBLE); 然后在onKeyDown里监听DPAD_RIGHT,如果是右键(左键一样)按下就把焦点从listView切回serfaceView case KeyEvent.KEYCODE_DPAD_RIGHT:
this.listView.setFocusable(false);
surfaceView.setFocusable(true);
surfaceView.setFocusableInTouchMode(true);
surfaceView.requestFocus();
return true;
但是按右键没反应,请问大家有什么好的方法实现focus的切换吗?
this.listView.setFocusable(false);
this.listView.setVisibility(View.GONE);
this.container.addView(this.surfaceView);
this.surfaceView.requestFocus();
//移动后弹出listview,listView获得焦点
this.listView.setItemsCanFocus(true);
this.listView.setDividerHeight(0);
this.listView.setFocusable(true);
this.listView.setFocusableInTouchMode(true);
this.listView.requestFocus();
this.listView.setVisibility(View.VISIBLE); 然后在onKeyDown里监听DPAD_RIGHT,如果是右键(左键一样)按下就把焦点从listView切回serfaceView case KeyEvent.KEYCODE_DPAD_RIGHT:
this.listView.setFocusable(false);
surfaceView.setFocusable(true);
surfaceView.setFocusableInTouchMode(true);
surfaceView.requestFocus();
return true;
但是按右键没反应,请问大家有什么好的方法实现focus的切换吗?
在你当前控件上加 android:nextFocusRight="你想切换到得另一个控件的ID"试试是否可行
我尝试在油价监听的代码里去调用surfaceView的draw方法,从新绘制surfaceView,但是没反应