【问题标题】:OnTouchListener in a View - Android视图中的 OnTouchListener - Android
【发布时间】:2013-05-12 10:12:43
【问题描述】:

当我向视图添加侦听器“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 方法中,它根本不记录。

【问题讨论】:

  • 使用this 假定Activity 是实现OnTouchListener 的活动,并且将调度触摸事件。
  • 我希望 View 有一个 OnTouchListener

标签: java android logcat


【解决方案1】:

您可以执行以下操作

  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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-06
    相关资源
    最近更新 更多