繁体   English   中英

视图中的OnTouchListener-Android

[英]OnTouchListener in a View - Android

当我向视图添加侦听器“ OnTouchListener”时,它不会注册。 这是我的代码:

GUI gui;
boolean guis = true;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    gui = new GUI(getBaseContext());
    gui.setOnTouchListener(this);
    setContentView(gui);
}

当我执行setOnTouchListener()时,我将“ this”作为参数。

我让GUI类实现OnTouchListener并添加了OnTouch方法。

Log.w("AA","Hello")

在OnTouch方法中,它根本不会记录下来。

您可以执行以下操作

  public class MainActivity extends Activity implements OnTouchListener{
    GUI gui;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
        gui = new GUI(MainActivity.this);
            setContentView(gui);
    gui.setOnTouchListener(this);
}


@Override
public boolean onTouch(View v, MotionEvent event) {
    // TODO Auto-generated method stub
    Log.w("AA","Hello")
    return true;
}

或者,您可以在gui视图中覆盖onTouch

public class GUI extends View{

Context mcontext; 
public MyView(Context context) {
    super(context);
            mcontext=context; 
}
@Override
public boolean onTouchEvent(MotionEvent event) {
Toast.makeText(mcontext, "View clicked", 1000).show();
switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
        // do something
        break;
    case MotionEvent.ACTION_MOVE:
        // do something
        break;
    case MotionEvent.ACTION_UP:
       //do something
        break;
}
return true;
}

正如Luksprog所说的,这是指当前上下文。

如果您这样做gui.setOnTouchListener(this);

您的活动类必须实现OnTouchListener并重写onTouch方法。

您也可以在自定义视图中覆盖onTouch。

如果仅覆盖onTouch,则无需在GUI自定义视图类中实现OnTouchListener。

暂无
暂无

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

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