当前位置: 首页 > 面试题库 >

捕捉双击textview android

通正平
2023-03-14
问题内容

我想双击我已经在下面的代码使用的textview

但它仍然不起作用:(

TextView txtOne;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    txtOne = (TextView) findViewById(R.id.txtOne);
    txtOne.setOnTouchListener(new View.OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            System.out.println("DRAG");
            return gestureDetector.onTouchEvent(event);

        }
    });
}

final GestureDetector gestureDetector = new GestureDetector(
        new GestureDetector.SimpleOnGestureListener() {

            @Override
            public boolean onDoubleTap(MotionEvent e) {
                System.out.println("Double Tap");
                return super.onDoubleTap(e);
            }

            @Override
            public boolean onSingleTapUp(MotionEvent e) {
                System.out.println("One Click");
                return super.onSingleTapUp(e);
            }


        });

仅拖动正在调用,但从未调用过“双击”和“一键单击”


问题答案:

请尝试以下步骤。

第1步

在您的活动中编写以下代码

// initialize the Gesture Detector
gd = new GestureDetector(this,new OnGestureListener() {
    @Override
    public boolean onSingleTapUp(MotionEvent e) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public void onShowPress(MotionEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
            float distanceY) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public void onLongPress(MotionEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
            float velocityY) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public boolean onDown(MotionEvent e) {
        // TODO Auto-generated method stub
        return false;
    }
});

// set the on Double tap listener
gd.setOnDoubleTapListener(new OnDoubleTapListener() {
    @Override
    public boolean onDoubleTap(MotionEvent e) {
        Toast.makeText(SplashActivity.this,"Double Tap",Toast.LENGTH_LONG).show();
    return false;
    }

    @Override
    public boolean onDoubleTapEvent(MotionEvent e) {
        // if the second tap hadn't been released and it's being moved

        return false;
    }

    @Override
    public boolean onSingleTapConfirmed(MotionEvent e) {
        // TODO Auto-generated method stub
        return false;
    }

});

第2步

为活动编写以下代码。这gd将是GestureDetector对象。

txt.setOnTouchListener(new View.OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub
            gd.onTouchEvent(event);
            return false;
        }
    });


 类似资料:
  • 在节点中。在js服务器上,捕获SIGTERM和捕获SIGINT有什么区别吗? 我认为进程不应该能够防止SIGINT关闭? 我是否能够捕获两个信号并阻止退出?我的实验表明答案是肯定的,但从我所读到的内容来看,SIGINT总是假设关闭一个进程。 或者我把SIGINT和SIGKILL混淆了?也许SIGKILL是我无法恢复的信号? 捕捉这些信号当然可以让我优雅地关机: 我想我把SIGINT和SIGKILL

  • 问题内容: 在Java中是否有捕捉到内存不足错误()的问题? 问题答案: 是的 。以下是一些可能有意义的示例: 如果您想通过 优雅地关闭 程序来处理它 如果要向用户显示问题或 记录错误 根据您的设计,您甚至可以清理内存并 恢复工作状态 但是 ,请注意,通常情况下(除非您处在一次要分配大量内存的位置),对于这些情况,您可能不会专门捕获OutOfMemoryError,而是始终在顶部进行操作主要入口点

  • 问题内容: 我听说捕捞被认为是不好的作法。我当前正在加载一个不能保证在PATH上的.dll,并希望在不存在的情况下切换到用户配置的位置。 有更好的方法吗?还是在这里接受是可以接受的? 问题答案: 除了提供有关如何从技术上解决问题的建议以外,我想花点时间解释一下为什么它首先被认为是“不好的做法”。 让我们从澄清什么是类开始。 在Java中,将引发错误和异常(它们是主要类型)。通过使用关键字可以完成上

  • 我定义了一个自定义错误处理程序,它捕获所有异常并将其保存到日志中。现在,如果我在mysqli查询中出现语法错误,例如打字错误,页面将完全停止加载。没有引发异常,因此不会触发错误处理程序,也不会记录任何内容。 这正常吗?我是否应该检查PHP设置来修复此问题,以便任何mysqli查询错误都会引发异常? (如果查询返回0个结果,我不希望引发异常-仅当它由于键入错误或查询结构中的其他错误而出错时) 查询示

  • 我的项目由一个小图标组成,它在一个尺寸为25×20的网格上移动。我知道我可以用几个if/else块轻松地完成这项工作,但我想了解更多关于错误处理的知识。 我当时想的是使用try-catch,但它根本不会捕获数组索引越界异常或任何:它不会返回“error”或位置,因此它永远不会进入catch块。 我在想这样的伪代码: 实际代码: