在按钮上移动手指的同时更改textView

时间:2014-02-16 16:25:28

标签: android textview android-button

在我的应用中,我有一个活动,其中有9个按钮和1个textView。当我在按钮上移动手指时,我正在使用OnTouchListener来更改textView中的文字。

这是我的活动的样子:

这是我的 java 代码:

    button1.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            textView.setText("Button 1");
            return false;
        }
    });
    button2.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            textView.setText("Button 2");
            return false;
        }
    });
    button3.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            textView.setText("Button 3");
            return false;
        }
    });
    button4.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            textView.setText("Button 4");
            return false;
        }
    });
    button5.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            textView.setText("Button 5");
            return false;
        }
    });
    button6.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            textView.setText("Button 6");
            return false;
        }
    });
    button7.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            textView.setText("Button 7");
            return false;
        }
    });
    button8.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            textView.setText("Button 8");
            return false;
        }
    });
    button9.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            textView.setText("Button 9");
            return false;
        }
    });

但是这段代码的问题是它只得到我触摸的第一个按钮的OnTouchListener。简单来说,当我移动我的手指时,我首先触摸的按钮会更改textView,而其他按钮则不会。我在网上搜索并且堆栈溢出也是如此,我遇到了像MotionEvent.ACTION_MOVE这样的东西,但我不知道如何使用它,我不确定它是否适用于这种情况。
请帮我解决这个问题!谢谢你的时间。

3 个答案:

答案 0 :(得分:0)

这在Android中不起作用。如果基础View不通过返回true消耗第一个事件(ACTION_DOWN),则在其外部发生的任何其他事件将仅由父视图处理。如果它消耗事件 - 所有事件直到ACTION_UP并且它本身将被传递到此视图。

如果要实现此类行为,则需要在单个View中处理所有事件,或者覆盖父View的dispatchTouchEvent方法以在此情况下定义自己的行为。

答案 1 :(得分:0)

你可以使用开关盒:

//
button1.setOnTouchListener(this);
button2.setOnTouchListener(this);
button3.setOnTouchListener(this);
button4.setOnTouchListener(this);
button5.setOnTouchListener(this);
}

 @Override
        public boolean onTouch(View v, MotionEvent event) {
switch(v.getID())
{
case(R.id.btn1):
{
 textView.setText("Button 1");
 break;

}
case(R.id.btn2):
{
 textView.setText("Button 2");
 break;
}
case(R.id.btn3):
{
 textView.setText("Button 3");
break;
}
case(R.id.btn4):
{
 textView.setText("Button4");
break;
}
case(R.id.btn5):
{
 textView.setText("Button 5");
break;

default: // bla
}          

return true;
        }

答案 2 :(得分:0)

您可以使用setOnClickListener或切换案例来做任何您想做的事情 您可以implements OnTouchListener开展活动并使用ACTION_UP

我在这里为你做第一种方法

button1.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub 
             textView.setText("Button 1");          

        }
    });

button2.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub 
             textView.setText("Button 2");          

        }
    });

你可以继续这个......