繁体   English   中英

Android OnTouchListener不起作用

[英]Android OnTouchListener Does Not Work

这很简单。 OnTouchListener完全不起作用。

我相当确定它正在初始化。 我使用自定义视图绘制UI,并且像往常一样,我受到Android的敏感API(双关语)的阻碍:

public class ViewInterface extends View implements OnTouchListener{

public ViewInterface(Context context){
    super(context);

    ...
}

public void update(){
    ...
}

@Override
public void onDraw(Canvas canvas){
    ...
}

@Override
public boolean onTouch(View v, MotionEvent event) {
    switch(event.getAction()){
    case MotionEvent.ACTION_DOWN:
        keyboardEnabled = true;
        return true;
    case MotionEvent.ACTION_UP:
        keyboardEnabled = false;
        return true;
    default: break;
    }

    return false;
}

用于在主要活动中初始化视图的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);

    //setContentView(R.layout.activity_aidan);
    activity = this;

    viewInterface = new ViewInterface(this);
    setContentView(viewInterface);

    initializeSpeechRecognition();
    findMe();

    run.start();
}

我想念什么? 触摸并按住屏幕后,应该将keyboardEnabled设置为true(它只是一个调试值),但它不会执行任何操作。 触摸事件似乎根本没有响应。

我试图通过以下代码使用View内置的onTouchEvent方法:

@Override
public boolean onTouchEvent(MotionEvent event) {
    switch(event.getAction()){
    case MotionEvent.ACTION_DOWN:
        keyboardEnabled = true;
        return true;
    case MotionEvent.ACTION_UP:
        keyboardEnabled = false;
        return true;
    default: break;
    }

    return false;
}

但是,这也不起作用。 触摸事件完全没有响应-轻按屏幕并释放,应将keyboardEnabled设置为false-不会。

您应该重写View类的onTouchEvent()方法。

现在,您只是在实现应与setOnTouchListener()方法结合使用的OnTouchListener接口。

例如:

@Override
public boolean onTouchEvent(MotionEvent event) {
    // do whatever
}

不要忘记在适当的地方叫super

或者,您可以调用setOnTouchListener(this); 在代码中的某处,但这似乎是多余的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM