2011-03-11 26 views
10

我在我的活動中實現了onTouchEvent(TouchEvent)。不過,我想知道需要採取哪些步驟將其註冊爲活動主內容視圖的事件。我想爲覆蓋活動的整個屏幕空間的視圖設置onTouchEvent。有一個setContentView()需要一個佈局ID。如何將活動作爲ontouchEvent偵聽器註冊到主內容視圖。我正在考慮findByView(activityLayoutId)來獲得這個視圖,但這看起來不像是正確或最好的方式。Android如何爲整個Activity主內容視圖註冊OnTouchEvent?

onCreate(){ 
    setContentView(R.id.yourMainLayout); 
    View contentView = (View)findViewById(R.id.yourMainLayout); 
    contentView.setOnTouchListener((View.OnTouchListener)this); 
} 

除非有人知道一個更好的方法:謝謝

+0

還是僅僅在活動中實現View.onTouchEvent就足夠了,視圖會自動註冊這個? – Androider 2011-03-11 22:47:12

+0

我只是在尋找如何在整個活動屏幕上激活觸摸事件,而不是添加到此屏幕的某些視圖。 – Androider 2011-03-11 22:47:46

回答

16

如果你正在尋找一種方式來獲得您的內容視圖Activity#setContentView(int)後一個觀點,那麼你可以在你的佈局的最外層元素上設置一個ID:

android:id="@+id/entire_view" 

,並引用它在setContentView後您的onCreate方法:

View view = getViewById(R.id.entire_view); 
view.setOnTouchListener(... 
-1

活動onCreate()方法。

+1

您仍然可以使用R.layout.yourMainLayout,並在佈局中爲您提供主鑲邊作爲ID – Androider 2011-03-11 22:58:39

1

像這樣(在onCreate):

setContentView(R.layout.activity_main); 

View view = findViewById(R.id.main); 
view.setOnTouchListener(new View.OnTouchListener() { 

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


             return true; 

            } 
           });