整个屏幕的onClickListener

时间:2014-02-10 00:27:18

标签: android android-layout onclicklistener

我正在制作一个闹钟。 我想做一个布局部分为空的活动(在背景上放一张照片) 我想这样做,如果我触摸屏幕上的任何地方,音乐就会停止。

我想过将img作为imageview ...... 但是当我这样做时它会在屏幕上显得很紧张(即使参数在整个屏幕上)

帮助?

7 个答案:

答案 0 :(得分:8)

布局中的

验证:

android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"

然后尝试使用onTouchListener

然后尝试:

yourActivityLayout.setOnTouchListener(new View.OnTouchListener() {  
        @Override
        public boolean onTouch(View arg0, MotionEvent arg1) {
           // action to do
            return true;//always return true to consume event
        }
    });

答案 1 :(得分:1)

如果您想触摸布局,请将侦听器设置为自己的布局

答案 2 :(得分:0)

让您的Activity或Fragment实现OnClickListener,然后将其作为点击侦听器分配给每个视图和/或布局。

在函数的第一行只运行一些逻辑,

@override
public void onClick(view v)
{
   if(isMusicPlaying)
      stopMusic();

   // here run the rest of your logic
   if (v == someButton){}

}

答案 3 :(得分:0)

以这种方式将触摸事件放在整个活动

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {

        if (event.getAction() == MotionEvent.ACTION_UP) {

            // do your work here
            return true;
        } else {
            return false;
        }
    }

}

答案 4 :(得分:0)

您可以使用WindowManager并将布局覆盖其他所有内容(也可以覆盖状态栏和其他系统UI)

WindowManager实例具有addVieW()方法。使用正确的布局参数,它会产生描述的结果

答案 5 :(得分:0)

尝试此操作,将最顶层的父级作为此方法的参数传递

例如:stopMusicOnTouch(yourParentView);

    public void stopMusicOnTouch(View view) {

    //Set up touch listener for non-text box views to hide keyboard.
    if(!(view instanceof ImageView)) {

        view.setOnTouchListener(new OnTouchListener() {

            public boolean onTouch(View v, MotionEvent event) {
                // Stop music here
                return false;
            }

        });
    }

    //If a layout container, iterate over children and seed recursion.
    if (view instanceof ViewGroup) {

        for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {

            View innerView = ((ViewGroup) view).getChildAt(i);

            stopMusicOnTouch(innerView);
        }
    }
}

答案 6 :(得分:0)

最后,我为整个屏幕制作了一个按钮,并将其设为透明(但可见)

它完美无缺,我建议其他人使用!