Android按钮事件响应顺序

Android按钮事件响应顺序

在一个按钮响应用户的动作时,有一定的顺序,而且, 同事绑定view和button的点击事件,button子类的点击事件会覆盖父类view的响应事件。
下面是一个例子:
package xueyou.xueyoucto.com.androidviews;


import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    private final String Tag = "MAINACTIVITY";
    public View view;
    public Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        view = this.findViewById(R.id.mainRelativeLayout);
        view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this, "click me", Toast.LENGTH_SHORT).show();
            }
        });

        button = (Button)this.findViewById(R.id.button);
        //这样是先执行OnTouch再执行OnClick事件
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this, "按钮被单击", Toast.LENGTH_SHORT).show();
            }
        });
        button.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                Toast.makeText(MainActivity.this, "按钮被触摸", Toast.LENGTH_SHORT).show();
                return false;
            }
        });
    }

}





    

运行结果:
点击按钮是,先弹出OnTouch事件,在进行Onclick事件,不会响应view的onclick事件。
单独点击view 的时候,会响应view的onClick事件。

你可能感兴趣的:(Android)