【问题标题】:Android - Triggering ontouch event when sliding through row of buttonsAndroid - 在按钮行中滑动时触发 ontouch 事件
【发布时间】:2016-09-21 08:32:01
【问题描述】:

我的应用中有一行按钮。我想要实现的是:当我将手指拖到按钮上时,将调用一个方法。

到目前为止,我的代码如下所示:

布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="horizontal"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.a4web.example.MainActivity">

</LinearLayout>

Java:

public class MainActivity extends AppCompatActivity {
LinearLayout rootView;

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

    rootView = (LinearLayout) findViewById(R.id.activity_main);

    for(int i=0; i<5; i++){
        Button button = new Button(this);
        button.setText(i);
        button.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {

                switch (event.getAction()){
                    case MotionEvent.ACTION_DOWN:
                        doSomething();
                        break;
                }

                return false;
            }
        });
        rootView.addView(button);
    }
}

我的方法 doSomething 只有在我按下按钮时才会被调用。当我拖动一个按钮时,我怎么能实现它被调用。我应该听什么样的活动?

【问题讨论】:

标签: java android ontouch


【解决方案1】:

为此,您必须使用 onTouchListener 而不是 onClickListener,它仅在您按下按钮并释放时才会触发。

即使onTouchListener对MotionEvent.ACTION_DOWN(当你按下时)、MotionEvent.ACTION_MOVE(当你拖动手指时)、MotionEvent.ACTION_UP(当你松开按钮时)三个事件起作用,你仍然必须按下按钮然后拖过去。 这意味着如果您先在按钮外部单击,则无法显示按钮上的拖动事件。

如果你想在任何地方点击然后检查按钮上的拖动事件,这仍然是一个不好的方法。

我建议你让所有视图都可以点击,并在整个视图上实现一个 onTouchListener 并在你的手指放在视图的特定部分时检查。

为此,重要的是使按钮不可点击,否则它们将避免整个视图可点击!

如果您想了解如何实现可点击视图,可以查看此存储库:

https://github.com/alessandroargentieri/JoyStick

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-06
    • 2012-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-04
    • 1970-01-01
    相关资源
    最近更新 更多