我想拖动我的PopUpWindows。所以我尝试实现演示应用程序从这里拖动一个简单的PopUp窗口:
https://questdot.com/android-popup-floating-window-tutorial/
当我将监听器添加到视图
时出现问题popVideospeedView.setOnTouchListener(new View.OnTouchListener():
然后 View.OnTouchListener()会出现红色下划线并发出警告:
Class'从OnTouchListener派生的匿名类'必须被声明为abstract或在'OnTouchListener'中实现抽象方法'onTouch(View,MotionEvent)'
它还拒绝 @Override 表示无法覆盖,并且还说它无法解析 MotionEvent
此外,图书馆 android.view.View.OnTouchListener 来自:
导入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代码位于由用户稍后在App中。这是一个相关的区别吗?如果是,那么如何或为什么?
最后,如果我添加: OnTouchListener (或者 View.OnTouchListener ?)在:实现类中,在: 公共课......等。 ...实现OnTouchListener ,它以红色下划线并发出警告:
类'MyMainActivity'必须声明为abstract或在'OnTouchListener'中实现抽象方法'onTouch(View,MotionEvent)'
我知道要实现 OnTouchListener 接口,我应该添加如下结构:
public boolean onTouch(View v,MotionEvent event){...
但是如何在PopUp方法之外声明一个带有 onTouc h的PopUp窗口? 非常感谢任何想法和您的兴趣。
答案 0 :(得分:0)
解决了!当我尝试使用 Alt+Enter
时,事实证明Android Studio没有为MotionEvent添加库。所以我手动添加了库: import android.view.MotionEvent;
,现在View.OnTouchListener
没有生成任何警告。非常感谢您的帮助,我希望这个案例可以帮助其他人克服这个愚蠢的错误。干杯