2011-03-11 41 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; 

            } 
           });