【问题标题】:using both onTouch and onClick on a button in android在android中的一个按钮上同时使用onTouch和onClick
【发布时间】:2017-07-08 05:22:31
【问题描述】:

我有一个Button,每当用户单击它时,它会增加我的EditText 中的数字,但我想要一个 onTouch 方法,当用户将手指放在按钮上时,数字会以更快的速度增加(连续地),像退格一样,当你点击它时,它只删除一个字母,当你按住它时,它会更快地删除单词,所以我的代码中有ontouch和onclick,但是每当我点击按钮只有onTouch触发器,我该怎么办?有人可以帮忙吗?我搜索了很多,但找不到任何对我有帮助的东西

这是我的部分代码

     btnFineUp.setOnTouchListener (this);   
            btnFineUp.setOnClickListener (this);

    @override
            public void onClick (View view)
        {
            switch (view.getId ())
            {
                case R.id.btn_fine_up:

                {
                    View     v = findViewById (getCurrentFocus ().getId ());
                    EditText editText;

                    if (v instanceof EditText)
                    {
                        editText = (EditText) v;
                    }
                    else
                    {
                        return;
                    }
                    int calcStateAmp   = +1;

                     if (view.getId () == R.id.btn_fine_up)
                    {
                        calcState_2 = upAndDown.getFineUpAmp () * calcStateAmp;

                        calcStateAmp = calcState_2;

                    }
                    double currentValue;
                    if (StringUtils.isNullOrEmpty (editText.getText ().toString ()))
                    {
                        currentValue = 0;
                    }
                    else
                    {
                        currentValue = Double.parseDouble (editText.getText ().toString ());
                    }
                    switch (getCurrentFocus ().getId ())
                    {
                        case R.id.txt_va1_a:
                        case R.id.txt_va2_a:
                        case R.id.txt_va3_a:
                        case R.id.txt_vb1_a:

                            editText.setText (String.format (Locale.ENGLISH, "%.2f", currentValue + (0.01 * calcStateAmp)));
                            break;
    }


        @Override
        public boolean onTouch (View view, MotionEvent motionEvent)
        {
                switch (view.getId ())
                {
                    case ir.vebko.R.id.btn_fine_up:

                    {
                        View     v = findViewById (getCurrentFocus ().getId ());
                        EditText editText;

                        if (v instanceof EditText)
                        {
                            editText = (EditText) v;
                        }
                        else
                        {
                            return false;
                        }
                        int calcStateAmp   = +1;



             if (view.getId () == R.id.btn_fine_up)
                        {
                            calcStateAmp = calcState_2;

                        }
                        double currentValue;
                        if (StringUtils.isNullOrEmpty (editText.getText ().toString ()))
                        {
                            currentValue = 0;
                        }
                        else
                        {
                            currentValue = Double.parseDouble (editText.getText ().toString ());
                        }

                        switch (getCurrentFocus ().getId ())
                        {
                            case ir.vebko.R.id.txt_va1_a:
                            case ir.vebko.R.id.txt_va2_a:
                            case ir.vebko.R.id.txt_va3_a:
                            case ir.vebko.R.id.txt_vb1_a:

                                editText.setText (String.format (Locale.ENGLISH, "%.2f", currentValue + (0.01 * calcStateAmp)));
                                break;
    }
return true;
}

【问题讨论】:

标签: android onclick ontouch


【解决方案1】:

OnTouch 本身也处理OnClick 的点击用户操作。因此,点击用户操作首先引发OnTouch 事件;只有当没有侦听器在收听OnTouch 时,它才会调用OnClick 事件。由于您有一个与OnTouch 事件关联的OnTouchListener,因此您的OnClickListener 不会被调用。更多详情,请看这个question

从您的问题来看,您似乎可以完全跳过View.OnTouchListener,而是同时实现View.OnLongClickListenerView.OnClickListener

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    相关资源
    最近更新 更多