从滚动视图打开子视图
Posted
技术标签:
【中文标题】从滚动视图打开子视图【英文标题】:Opening childview back from scrollview 【发布时间】:2010-10-28 14:38:45 【问题描述】:我有一个父 ScrollView
有一个子视图。当用户按下后退按钮时,我希望子视图处理事件。我尝试了几件事,但似乎都没有。按后退按钮会终止活动。
public class GameScrollView extends ScrollView
public GameScrollView(Context context)
super(context);
@Override
public boolean onInterceptTouchEvent (MotionEvent ev)
return false;
@Override
public boolean onKeyDown (int keyCode, KeyEvent event)
return false;
在子视图中我有以下代码
public class GameView extends View implements OnTouchListener, onKeyListener
public boolean onKey(View v, int keyCode, KeyEvent event)
if(keyCode == KeyEvent.KEYCODE_BACK)
//do stuff
invalidate();
return true;
在ScrollView
中,我也尝试过覆盖dispatchKeyEvent
方法以返回false,但这也不起作用。我在这里做错了什么?
谢谢!
【问题讨论】:
【参考方案1】:@Override
public boolean onKeyDown(int i, KeyEvent event)
if (i == KeyEvent.KEYCODE_BACK)
return true;
else
super.onKeyDown(i, event);
return true;
return false;
另外,我认为您必须拦截活动中的按键,而不是视图。
【讨论】:
如果我在activity中拦截了按键,我将如何将它发送到视图进行处理?视图需要根据按键进行一些绘图。谢谢。【参考方案2】:我想通了。这不起作用的原因是子视图没有焦点。
在子视图的构造函数中设置requestFocus()
属性解决了这个问题。
【讨论】:
以上是关于从滚动视图打开子视图的主要内容,如果未能解决你的问题,请参考以下文章