2009-05-24 88 views
2

我有一個家長ScrollView與子視圖。當用戶按下後退按鈕時,我想讓子視圖處理事件。我已經嘗試了幾件事情,但沒有一件似乎有效。按下後退按鈕會終止活動。從滾動視圖打開childview

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

我想通了。這不起作用的原因是因爲孩子的觀點沒有重點。

在子視圖的構造函數中設置requestFocus()屬性可以解決問題。

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; 
    } 

此外,我認爲你必須攔截你的活動中的按鍵,而不是視圖。

+0

如果我攔截活動中的按鍵,我將如何將它發送到視圖進行處理?該視圖需要根據按鍵進行一些繪製。 謝謝。 – Maulin 2009-05-25 03:40:27