当前位置:编程学习 > wap >>

SurfaceView与ListView的focus问题

先介绍一下系统的布局,在一个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的切换吗? --------------------编程问答-------------------- --------------------编程问答-------------------- 在XML中
在你当前控件上加 android:nextFocusRight="你想切换到得另一个控件的ID"

试试是否可行 --------------------编程问答--------------------
引用 2 楼  的回复:
在XML中
在你当前控件上加 android:nextFocusRight="你想切换到得另一个控件的ID"

试试是否可行

试过了 不行。
我尝试在油价监听的代码里去调用surfaceView的draw方法,从新绘制surfaceView,但是没反应
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,