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