2013-04-10 142 views
3

我一直在困難幾天,我的谷歌搜索開始運行幹可能的解決方案。我正在嘗試創建一個類,該類添加一個View並接收與UndoBar庫類似的onTouch事件或onClick事件。問題是,除非將視圖添加到ViewGroup而不是WindowManager,否則永遠不會調用onTouch/onClick事件。這裏是我的非工作代碼如下:Android中的WindowManager添加的View onTouch或onClick事件

final LayoutInflater mLayoutInflater = (LayoutInflater) 
      context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    final View mView = mLayoutInflater 
      .inflate(R.layout.test, null); 


    final TextView clickTextView = (TextView) 
      mView.findViewById(R.id.clickTextView); 


    WindowManager mWindowManager = (WindowManager) 
      context.getSystemService(Context.WINDOW_SERVICE); 

    final WindowManager.LayoutParams params = new WindowManager.LayoutParams(); 

    params.height = WindowManager.LayoutParams.WRAP_CONTENT; 
    params.width = WindowManager.LayoutParams.WRAP_CONTENT; 

    params.flags = WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON; 

    params.format = PixelFormat.TRANSLUCENT;  
    params.type = WindowManager.LayoutParams.TYPE_TOAST; 

    mWindowManager.addView(mView, params); 

    clickTextView.setOnTouchListener(new OnTouchListener() 
    { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) 
     { 

      Log.i("onTouch", "onTouch has been called"); 

      return false; 

     } 
    }); 

} 

請注意:通過這裏傳遞的上下文是一個活動上下文。

爲了使這個代碼工作,我需要獲取活動的根佈局,並添加視圖。我的問題,這可能是一個noob問題,爲什麼我不能獲得添加到WindowManager的View的事件的onTouch/onClick?

感謝您的任何幫助。

回答

1

下面是使這項工作的代碼,但仍然沒有找到我的問題探討。

final View mView = mLayoutInflater 
      .inflate(R.layout.test, activityViewGroup, false); 

    activityViewGroup.addView(mView);