Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将触摸焦点转移到另一个视图_Android_Events_View_Focus_Touch - Fatal编程技术网

Android 将触摸焦点转移到另一个视图

Android 将触摸焦点转移到另一个视图,android,events,view,focus,touch,Android,Events,View,Focus,Touch,这个问题有点尴尬。是否可以将一个视图的触摸焦点转移到另一个视图?基本上,假设您有一个视图拾取第一个动作_向下触摸事件,然后立即希望将所有触摸事件的焦点转移到另一个视图,以处理它的onTouchEvent(MotionEvent事件)。我原以为做以下事情会让它起作用,但事实并非如此: @override public boolean onTouchEvent(MotionEvent) { this.clearFocus(); anotherView.setFocusab

这个问题有点尴尬。是否可以将一个视图的触摸焦点转移到另一个视图?基本上,假设您有一个视图拾取第一个
动作_向下
触摸事件,然后立即希望将所有触摸事件的焦点转移到另一个视图,以处理它的
onTouchEvent(MotionEvent事件)
。我原以为做以下事情会让它起作用,但事实并非如此:

 @override
 public boolean onTouchEvent(MotionEvent) {
      this.clearFocus();
      anotherView.setFocusableInTouchMode(true);
      anotherView.requestFocus();
 }
显然,在我看来,它只是不工作的方式。有人能给我解释一下我该怎么做这样的事吗


如果我的问题仍然有点难以理解,请考虑使用常规按钮。按下时,按钮将高亮显示(聚焦),如果您将手指从按钮上移开,但仍将手指保持在屏幕上,则按钮将变为非聚焦,但仍可以控制整个触摸事件(即使您移动到其他视图上,也无法聚焦其他视图)。我的问题是,是否可以将此触摸焦点转移到另一个要处理的视图,而无需将手指从屏幕上移开。

尝试下面的代码可能会起作用

button1.setOnFocusChangeListener(new OnFocusChangeListener()
{           
    @Override
    public void onFocusChange(View arg0, boolean hasFocus)
    {
        if(hasFocus)                
            button2.requestFocus();             
    }
});

我解决这个问题的方法是使用一个视图“Harnese”,其唯一目的是将触摸信息传递给其他类,然后由其他类进行处理。请注意,ViewA和B实际上不必是视图,而是扩展视图类。这不是一个理想的解决方案,但我认为用当前的Android框架(ICS/JB)解决这个问题是不可能的

class ViewHarness extends View{

    public boolean onTouch(MotionEvent event){
    if(ViewA is selected)
        ViewA.onTouch(event);
    else
        ViewB.onTouch(event);
}