首页 文章

我无法实现OnTouchListener来拖动PopUp窗口

提问于
浏览
2

我想拖动我的PopUpWindows . 所以我尝试实现演示应用程序从这里拖动一个简单的PopUp窗口:

https://questdot.com/android-popup-floating-window-tutorial/

将侦听器添加到视图时会出现问题

popVideospeedView.setOnTouchListener(new View.OnTouchListener()

然后 View.OnTouchListener() 出现红色下划线并发出警告:

类'Anonymous class derived from OnTouchListener'必须声明为abstract或在'OnTouchListener'中实现抽象方法'onTouch(View, MotionEvent)'

它也拒绝 @Override 说它不能被覆盖,并且还说它无法解决 MotionEvent

图书馆 android.view.View.OnTouchListener 来自:

import android.view.View.OnTouchListener; 未使用

我的代码非常类似于从引用的链接运行的代码,他们的迷你应用程序在Android Studio SDK中编译并运行良好 . 但我的代码拒绝触摸侦听器的实现 . 我能做错什么?

我的PopUp Window实现的代码是:

public void functionVideospeedPopupWindow() {
    try {
        LayoutInflater popVideospeedLayoutInflater = (LayoutInflater) LMMoviesMainActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View popVideospeedView = popVideospeedLayoutInflater.inflate(R.layout.popvideospeed, null);
        final PopupWindow popVideospeedPopupWindow = new PopupWindow(popVideospeedView, LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT, true);

        popVideospeedPopupWindow.setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.colorStone)));
        popVideospeedPopupWindow.setOutsideTouchable(false);
        popVideospeedPopupWindow.setFocusable(false);

        Button videospeedCloseButton = (Button) popVideospeedView.findViewById(R.id.popvideospeed_closeButton);
        popVideospeedPopupWindow.showAtLocation(popVideospeedView, Gravity.CENTER, 0, 0); // 8:Margin to the left?. 18 comienza el texto utube

        popVideospeedView.setOnTouchListener(new View.OnTouchListener() {
             @Override
                public boolean onTouch(View v, MotionEvent event) {
                    // event code...
                    return true;
                }
         });

        videospeedCloseButton.setOnClickListener(new Button.OnClickListener() {
            public void onClick(View v) {
                popVideospeedPopupWindow.dismiss();
            }
        });

    } catch (Exception e){}
} // End of functionVideospeedPopupWindow()

我注意到运行示例的唯一区别是它们的PopUp代码是在类的 onCreate 扇区内声明的,而我的PopUp Window代码位于用户稍后在应用程序中启动的方法中 . 这是一个相关的区别吗?如果是这样,那怎么或为什么?

最后,如果我添加: OnTouchListener (或它是 View.OnTouchListener ?)in:类的实现,如:public Class ...等 . ...实现OnTouchListener,它以红色下划线并发出警告:

类'MyMainActivity'必须声明为abstract或在'OnTouchListener'中实现抽象方法'onTouch(View, MotionEvent)'

我知道要实现 OnTouchListener 接口,我应该添加如下结构:

public boolean onTouch(View v,MotionEvent event){...

但是如何在PopUp方法之外声明一个带有 onTouc h的PopUp窗口?非常感谢任何想法和您的兴趣 .

1 回答

  • 0

    Solved! 当我尝试使用 Alt+Enter 时,事实证明Android Studio没有为MotionEvent添加库 . 所以我手动添加了 library: import android.view.MotionEvent; ,现在 View.OnTouchListener 没有生成任何警告 . 非常感谢您的帮助,我希望这个案例可以帮助其他人克服这个愚蠢的错误 . 干杯

相关问题